我遇到了人们似乎经常遇到的问题。我需要访问我的主类资源文件夹中的一些资源(即迁移)。
This帖子谈论,但提议的解决方案不起作用。我的JUnit测试无法使用src/main/resources
中的资源。
This帖子有一个引用Maven的解决方案,因为我在Gradle土地上,所以对我没什么好处。
作为参考,以下代码不工作
public class ConnectorTests {
@Before
public void initialize() throws SQLException {
Reader vendorSql = new InputStreamReader(
this.getClass().getResourceAsStream(
"/migrations/V0__create_vendor_table.sql"));
它给出了一个预期的空指针异常,因为找不到该文件。
我可以确认这是问题,因为通过将有问题的文件复制到src/test/resources/migrations
,它可以正常工作。这并不理想,因为这意味着当我更改或添加迁移时,我还有一个额外的步骤。
我是否需要在Gradle中进行一些类路径voodoo以使其正常工作?
谢谢!
答案 0 :(得分:0)
您可以使用google guava
compile group: 'com.google.guava', name: 'guava', version: '19.0'
然后以这种方式调用您的资源文件夹:
URL url = Resources.getResource("migrations/V0__create_vendor_table.sql");
String text = Resources.toString(url, Charsets.UTF_8);
这对我有用......