我遇到了人们似乎经常遇到的问题。我需要访问我的主要类资源文件夹中的一些资源(即迁移(。
本文讨论了,但是提出的解决方案不起作用。src/main/resources
中的资源无法用于我的Junit测试。
这篇文章有一个参考Maven的解决方案,因为我在Gradle Land。
作为参考,以下代码不工作
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中做一些classpath voodoo才能使它正确工作吗?
谢谢!
您可以使用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);
对我有用...