繁体   English   中英

IntelliJ测试失败,Gradle测试正常:无法识别'test / resources'中的JSON文件

[英]IntelliJ tests fail, Gradle tests fine: does not recognize JSON files in 'test/resources'

在一个项目中,我想在我的测试类中使用src / test / resources中的一些示例JSON文件。 如果您想亲自测试,可以在https://github.com/kamikat/moshi-jsonapi上找到该项目。 项目设置如下所示: 项目设置

在我的测试中,我加载这样的资源文件:

public static String readResource(String resourceName) {
    Scanner scanner = new Scanner(TestResources.class.getResourceAsStream(resourceName), "UTF-8");
    return scanner.useDelimiter("\\A").next();
}

public static String getPrivateSample() {
    return readResource("/private.json");
}

到现在为止还挺好。 要将* .json文件添加到我的类路径,我需要将它添加到build.gradle文件中:

sourceSets {
    test {
        resources {
            srcDir "resources"
            includes["**/*.json"]
        }
    }
}

现在我可以运行./gradlew test ,所有测试都是绿色 - 太棒了! 但是:如果我从IntelliJ(Android Studio 2.2 RC1)运行测试,会发生以下情况:

java.lang.NullPointerException: source

    at java.util.Objects.requireNonNull(Objects.java:228)
    at java.util.Scanner.<init>(Scanner.java:578)
    at moe.banana.jsonapi2.TestResources.readResource(TestResources.java:8)
    at moe.banana.jsonapi2.TestResources.getPrivateSampleSerialized(TestResources.java:17)
    at moe.banana.jsonapi2.PrivateAndProtectedTest.serializePrivate(PrivateAndProtectedTest.java:58)
    at [...]

问题似乎是当从IntelliJ运行测试时,JSON文件未添加到类路径中。 我可以通过在项目设置中将资源添加为手动依赖项来暂时解决此问题,但我正在寻找自动化解决方案。

我已经尝试了这个这个这个 ,但没有任何作用。 一些答案表明它是IntelliJ中的一个错误 ,被标记为“固定” - 但仍然没有适合我的解决方案。

有没有人让他的测试资源正常工作?

你可以让IDEA使用gradle运行测试:

文件 - >设置 - >构建,执行,部署 - >构建工具 - > Gradle - > Runner - >运行测试使用:Gradle Test Runner

这肯定与你的.idea文件夹有关。 尝试备份项目的当前.idea ,将其从项目根目录中删除,然后再次在IDEA中打开它,这样就会生成一个新的设置文件夹。 然后开始将您的设置从备份文件夹迁移到新文件夹(至少是有意义的文件夹)。

我刚用这种方法在我的环境中解决了这个问题(运行Java测试但是测试资源没有被识别)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM