在其他模块中加载测试资源?

mem*_*und 5 java junit maven

我在另一个模块中使用抽象类来读取和输入我的测试数据:

package src/main/java/path/to/my/base/testclass;
InputStream stream = getClass().getResourceAsStream(filename);
Run Code Online (Sandbox Code Playgroud)

filename例如"test.txt",位于src/main/resources/path/to/my/base/testclass

只要我把这个抽象类放到我的测试类所在的同一个模块中,一切都正常。然后我将 acstract 类(以及资源​​)提取到其他模块,编译,添加到 pom 等。 结果:我的测试实现运行良好,但是:我收到 IO 异常作为file could not be found.

我在这里缺少什么?为什么抽象类可以在同一个模块中工作,而不能在另一个模块中工作?

Sea*_*oyd 3

测试资源仅用于此工件的测试,不会部署它们。

有两种可能的方法可以解决这个问题:

  • 脏:让您的应用程序与主 jar 一起部署测试 jar,并将其作为范围 TEST 的依赖项添加到第二个工件。
  • Clean:为基本测试类和公共测试资源创建单独的测试工件。重要提示:在这个工件中,src/test 中没有任何内容,所有内容都在 src/main 中。使用范围 TEST 从其他两个工件中引用此测试工件。