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

时间:2017-02-16 08:29:55

标签: java maven intellij-idea junit

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

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

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

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

1 个答案:

答案 0 :(得分:4)

target/test-classes中的所有内容都会被maven-resources-plugin复制到src/main/resources。然后,target/classes中的所有内容都会进入target/test-classes。然后,maven-surefire-plugin configures类路径按此顺序排列:首先target/classes,然后是src/main/resources

由于这一点,如果您的资源同时保留在src/test/resourcessrc/main/resources中,则其“测试”版本将在单元测试中加载。

如果它仅存在于src/test/resources中,它将在单元测试中可用,无需任何进一步操作。

如果它仅存在于public class OrderController: ApiController { private readonly IMessageSender _msgSender; public OrderController(IMessageSender msgSender) { _msgSender = msSender; } } 中,您将只能在单元测试期间访问它。