我使用以下调用来获取流,以便我可以找到某些资源的文件名。
Thread.currentThread().getContextClassLoader().getResourceAsStream(...)
当我正常运行我的代码时这很好用,如果我将资源复制到我的测试文件夹中,它也可以正常工作。
如何避免这种重复并使我的测试(在通过IDEA运行时)使用main中的资源?
答案 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/resources
和src/main/resources
中,则其“测试”版本将在单元测试中加载。
如果它仅存在于src/test/resources
中,它将在单元测试中可用,无需任何进一步操作。
如果它仅存在于public class OrderController: ApiController {
private readonly IMessageSender _msgSender;
public OrderController(IMessageSender msgSender) {
_msgSender = msSender;
}
}
中,您将只能在单元测试期间访问它。