gpt4 book ai didi

java - 是什么破坏了我的 getResourceAsStream?

转载 作者:行者123 更新时间:2023-12-02 02:46:45 26 4
gpt4 key购买 nike

我正在接管一个项目,并且必须假设测试在某些时候按照我发现它们的方式工作(归结为不应该为空):

@Test
public void testCoding() {
assertNotNull(getClass().getResourceAsStream("/myfile.json"));
//assertNotNull(MyTest.class.getResourceAsStream("/myfile.json"));
//assertNotNull(MyTest.class.getClassLoader().getResourceAsStream("myfile.json"));
//...
}

使用 src/test/resources/ 中的 myfile.jsonsrc/test/java/some/package/ 中的测试。

我尝试将 myfile.json 放入与测试相同的文件夹中,在 src/java 文件夹中,我尝试使用和不使用前导 / 以及使用 /resources 以及我在 SO 上找到的所有提示。

gradle 文件是:

    apply plugin: 'java'

repositories {
mavenCentral()
}

dependencies {
testCompile "junit:junit:$junitVersion"
}

我错过了什么?

<小时/>

更新:

我意识到源代码位于我们项目的开源部分,并且仅在 AS 中失败。

Here is the line that fails如果我右键单击 lt-api/src/test/java/文件夹并选择“运行所有测试”。 Gradle 控制台打印出这一行:

    Executing tasks: [:lt-api:compileJava, :lt-api:testClasses, :mbwlib:compileJava, :mbwlib:testClasses, :bitlib:compileJava, :bitlib:testClasses]

正在运行 ./gradlew clean :lt-api:compileJava :lt-api:testClasses :mbwlib:compileJava :mbwlib:testClasses :bitlib:compileJava :bitlib:testClasses

不会触发错误,但也不会运行测试。 (我怎么知道AS到底在做什么?我以为AS现在一直在做gradle呢?)

正在运行

    ./gradlew clean :lt-api:test

我让测试运行(添加拼写错误会导致测试失败),但它不会触发我最初遇到且我想了解的问题。

文件应该在哪里?

$ sudo updatedb
$ locate test-classes
$ locate ungargasse.json
/path/to/project/lt-api/build/resources/test/ungargasse.json
/path/to/project/lt-api/src/test/resources/ungargasse.json

最佳答案

编译代码后,请确保 myfile.json 位于测试类中。

(默认情况下,src/test/resources/中的文件编译后会自动移动到测试类中) enter image description here

在两种情况下,您可以使用不带前导“/”的 getResourceAsStream:

  1. Test.java 位于 src/test/java/some/package 中,myfile.json 位于 /test/resource

    src/test/java/some/package/Test.java
    src/test/resource/myfile.json
  2. Test.java 和 myfile.json 在同一个包中

    src/test/java/some/package/Test.java
    src/test/java/some/package/myfile.json

例如

@org.junit.Test
public void testCoding() {
InputStream resourceAsStream = getClass().getResourceAsStream("myfile.json");
System.out.println(resourceAsStream);

}

关于java - 是什么破坏了我的 getResourceAsStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com