我正在使用以下调用来获取流,以便我可以找到我的一些资源的文件名。
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/resources
和 src/test/resources
中,其“测试”版本将加载到单元中测试。
如果它只存在于src/main/resources
中,那么单元测试中就可以使用它,不需要任何进一步的操作。
如果它仅存在于 src/test/resources
中,您将只能在单元测试期间访问它。
关于java - 如何让我的 JUnit 测试从 main 访问资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268577/