上文提到应老板要求开发一个测试工具能方便的加载存于文件中的测试参数,当时考虑既然是测试,把测试参数文件和测试类放在一起岂不是很方便,但是老板说:我的需求是你把测试参数文件放到统一文件夹下比如resources目录下,当然你做的这个也可以保留。 好吧,既然老板都说了,我就开干呗,主要问题是如何在CaseloaderSupplier中获取resources文件夹的路径,很多人的第一反应是直接new File("/src/test/resources")不行吗? 当然是不行的,因为通过maven编译以后会把资源文件拷贝到target目录下边,直接通过file是定位不到的。唯一的解决方案(我目前感觉是唯一的)是使用Java提供的抽象方法:resources。可以通过Class.getResources()或者ClassLoader.getResources()。 Class.getResource底层也是将加载任务委托给ClassLoader做的。 当然,在做这个之前对resource不是太熟悉,只是偶尔会调用一下接口,所以感觉还是详细了解一下resource心里有底一点,google了很多文章,大概意思是getResource("")获取的是当前调用类路径,比如当前类路径为file:/Users/caiyao/workservice/test-caseloader/target/classes/base/ (打包以后的),getResource("/")这个获取的是classpath的根目录,比如file:/Users/caiyao/workservice/test-caseloader/target/classes/(注意:没有包名)。问题是老板要求测试参数类要在test包下的resources目录里,这样获取的是main的包下面的,那么怎样才能让在测试的时候(执行@Test方法)加载test包下的资源呢? 当然在思考这个问题之前,我还是在执行@Test时试了一下,令人迷惑的是,在执行@Test的时候拿到的已经是test包下的资源了!!!file:/Users/caiyao/workservice/test-caseloader/target/test-classes/ 如何办到的,详细看下源码: 上文提到应老板要求开发一个测试工具能方便的加载存于文件中的测试参数,当时考虑