Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ测试失败,Gradle测试正常:无法识别';测试/资源';_Java_Android Studio_Intellij Idea_Gradle_Classpath - Fatal编程技术网

Java IntelliJ测试失败,Gradle测试正常:无法识别';测试/资源';

Java IntelliJ测试失败,Gradle测试正常:无法识别';测试/资源';,java,android-studio,intellij-idea,gradle,classpath,Java,Android Studio,Intellij Idea,Gradle,Classpath,在项目中,我想在测试类中使用src/test/resources中的一些示例JSON文件。如果您想自己测试,可以在上找到该项目。项目设置如下所示: 在我的测试中,我加载的资源文件如下: public static String readResource(String resourceName) { Scanner scanner = new Scanner(TestResources.class.getResourceAsStream(resourceName), "UTF-8");

在项目中,我想在测试类中使用src/test/resources中的一些示例JSON文件。如果您想自己测试,可以在上找到该项目。项目设置如下所示:

在我的测试中,我加载的资源文件如下:

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 [...]
java.lang.NullPointerException:源代码
位于java.util.Objects.requirennull(Objects.java:228)
位于java.util.Scanner.(Scanner.java:578)
位于moe.banana.jsonapi2.TestResources.readResource(TestResources.java:8)
位于moe.banana.jsonapi2.TestResources.getPrivateSampleSerialized(TestResources.java:17)
位于moe.banana.jsonapi2.PrivateAndProtectedTest.serializePrivate(PrivateAndProtectedTest.java:58)
在[…]
问题似乎是当测试从IntelliJ运行时,JSON文件没有添加到类路径。我可以通过在项目设置中添加资源作为手动依赖项来暂时解决这个问题,但我正在寻找一个自动化的解决方案

我已经试过了,但是没有效果。 一些答案表明这是一个标记为“固定”的问题,但仍然没有适合我的解决方案


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

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


文件->设置->构建、执行、部署->构建工具->渐变->运行程序->使用:渐变测试运行程序运行测试


文件->设置->构建、执行、部署->构建工具->渐变->运行程序->使用:渐变测试运行程序运行测试这当然与您的
.idea
文件夹有关。尝试备份项目的当前
.idea
,将其从项目根目录中删除,然后在idea中再次打开,以便生成新的设置文件夹。然后开始将设置从备份文件夹迁移到新文件夹(至少是有意义的文件夹)


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

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


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

PS:我提到的开源库中有一个问题取决于这个问题:PS:我提到的开源库中有一个问题取决于这个问题:谢谢你的回答!在“设置”中搜索“生成工具”或“运行程序”部分时,我找不到它们。我使用的是Android Studio 2.2 RC1,这可能就是原因。不过,这并不能解决我的问题,因为我正在寻找一个自动(基于gradle的)解决方案,它可以自动为每个新开发人员工作。谢谢你的回复!在“设置”中搜索“生成工具”或“运行程序”部分时,我找不到它们。我使用的是Android Studio 2.2 RC1,这可能就是原因。不过,这对我来说并不能解决这个问题,因为我正在寻找一个自动(基于gradle的)解决方案,它可以自动为每个新开发人员工作。