【问题标题】:IntelliJ tests fail, Gradle tests fine: does not recognize JSON files in 'test/resources'IntelliJ 测试失败,Gradle 测试正常:无法识别“测试/资源”中的 JSON 文件
【发布时间】:2017-01-16 02:19:11
【问题描述】:

在一个项目中,我想在我的测试类中使用来自 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 文件未添加到类路径中。我可以通过在项目设置中将资源添加为手动依赖项来临时解决此问题,但我正在寻找一个自动化的解决方案。

我已经尝试过thisthisthis,但没有任何效果。 一些答案表明这是一个bug in IntelliJ,它被标记为“已修复”——但仍然没有适合我的解决方案。

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

【问题讨论】:

标签: java android-studio intellij-idea gradle classpath


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回复!当我在“设置”中搜索“构建工具”或“跑步者”部分时,我找不到它们。我正在使用 Android Studio 2.2 RC1,这可能是原因。尽管如此,这并不能解决我的问题,因为我正在寻找一种自动适用于每个新开发人员的自动化(基于 gradle)的解决方案。
    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2019-07-31
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多