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

标签 java maven junit

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

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

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

只要我将这个抽象类放入与我的测试类所在的同一模块中,一切都会正常进行。 然后我将 acstract 类(以及资源​​)提取到其他模块,编译,添加到 pom 等。 结果:我的测试实现运行良好,但是:我收到 IO 异常,因为找不到文件。

我在这里错过了什么?为什么抽象类在同一个模块中工作,但在另一个模块中却不行?

最佳答案

测试资源仅用于此 Artifact 的测试,不会部署。

有两种可能的解决方法:

  • 肮脏:制作您的应用 deploy a test jar along with the main jar , 并将其作为范围为 TEST 的依赖项添加到第二个 Artifact 。
  • 清洁:为基础测试类创建一个单独的测试 Artifact ,并 通用测试资源。重要提示:在这个 Artifact 中,src/test 中没有任何内容,所有内容都在 src/main 中。从其他两个引用此测试 Artifact 范围为 TEST 的 Artifact 。

关于java - 在其他模块中加载测试资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082539/

相关文章:

java - 我收到异常 org.hibernate.MappingException : No Dialect mapping for JDBC type: -9

java - JTabbedPane点击事件

azure - 使用 com.crealytics :spark-excel 检测到 fs.azure.account.key 的配置值无效

java - 在 Weblogic 12.1.x 应用程序服务器上为 JPA 2.1 + 'Spring Data JPA' 选择哪个 Maven 依赖项?

java - 创建一个可以从数组列表中删除项目并将其添加到另一个数组列表中的方法(在某些条件下)

java.io.FileNotFoundException 即使 imageView 可以显示图片

java - 使用 Maven 使用注释 @Tag ("name_test") 过滤 JUnit 5 测试用例

java - 为什么 JaCoCo 看到了我的 JUnit 但忽略了我的 Spock 测试?

java - 无法在 JUnit 中获取 JDBC 连接

java - 如何从 Mockito 模拟中获取每个方法的调用?