java - 如何让我的 JUnit 测试从 main 访问资源?

标签 java maven intellij-idea junit

我正在使用以下调用来获取流,以便我可以找到我的一些资源的文件名。

Thread.currentThread().getContextClassLoader().getResourceAsStream(...)

当我正常运行我的代码时,它工作正常,如果我将我的资源复制到我的测试文件夹中,它也工作正常。

如何避免这种重复并使我的测试(通过 IDEA 运行时)使用来自 main 的资源?

最佳答案

src/test/resources 中的所有内容都由 maven-resources-plugin 复制进入目标/测试类。然后,您在 src/main/resources 中拥有的所有内容都会进入 target/classes。然后,maven-surefire-plugin configures类路径按此顺序:首先是 target/test-classes,然后是 target/classes

多亏了这一点,如果您的资源同时位于 src/main/resourcessrc/test/resources 中,其“测试”版本将加载到单元中测试。

如果它只存在于src/main/resources中,那么单元测试中就可以使用它,不需要任何进一步的操作。

如果它仅存在于 src/test/resources 中,您将只能在单元测试期间访问它。

关于java - 如何让我的 JUnit 测试从 main 访问资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268577/

相关文章:

java - 在 Java 中读取 PDF 文件 - 没有外部库

java - 如何在 java 中解析 XML 标记的全部内容

java - Return 语句也结束父方法?

java - 在 Eclipse 中对 Maven 依赖项进行排序

java - 我无法使用 javax.servlet 版本 2.5 导入 javax.servlet.FilterRegistration

javascript - React API 调用在开发中有效,在生产构建中失败

java - Spring Boot Maven 使用特定的 application.properties 构建 war

java - 如何正确获取 WebTarget 获取请求响应 (JAX-RS) 的正文?

java - 如何在 Intellij IDEA 中更改 Javadoc 的字体大小?

java - 更新 IntelliJ 版本 13.0.4 SDK 错误的问题