与Gradle的Junit测试中从主计划访问资源



我遇到了人们似乎经常遇到的问题。我需要访问我的主要类资源文件夹中的一些资源(即迁移(。

本文讨论了,但是提出的解决方案不起作用。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);

对我有用...

最新更新