【发布时间】: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 文件未添加到类路径中。我可以通过在项目设置中将资源添加为手动依赖项来临时解决此问题,但我正在寻找一个自动化的解决方案。
我已经尝试过this、this 和this,但没有任何效果。 一些答案表明这是一个bug in IntelliJ,它被标记为“已修复”——但仍然没有适合我的解决方案。
有人让他的测试资源正常工作吗?
【问题讨论】:
-
PS:我提到的开源库中有一个问题取决于这个问题:github.com/kamikat/moshi-jsonapi/issues/18
标签: java android-studio intellij-idea gradle classpath