1

我知道有很多关于这个的问题和答案,但我已经尝试了我读过的所有内容,你可以肯定它已经很多了。我正在使用 Spring Tool Suite 3.1.0(但还没有 Spring)、嵌入式 Maven 3.0.4 和 JUnit 4。Ubuntu 12.04。我有这个 JUnit 4 测试:

    @Test
public final void testCheckAudio() {
    final InputStream stream = AudioServiceImplTest.class.getResourceAsStream("/test.wav");
    assertNotNull(stream);
}

test.wav 在 src/test/resources 中,我检查过它是否已复制到目标/测试类。当我运行为 ... Maven 测试时,我得到: ... 失败的测试:testCheckAudio(edu.gerher.askitcollector.test.services.AudioServiceImplTest) ... 无法执行目标 org.apache.maven.plugins:maven- surefire-plugin:2.10:test (default-test) on project ...


测试集:MyPackage.AudioServiceImplTest

测试运行:16,失败:1,错误:0,跳过:0,经过的时间:0.039 秒 <<< 失败!testCheckAudio(MyPackage.AudioServiceImplTest) 已用时间:0.005 秒 <<< 失败!java.lang.AssertionError at edu.gerher.askitcollector.test.services.AudioServiceImplTest.testCheckAudio(AudioServiceImplTest.java:238) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method .java:597) 在 org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) 在 org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) 在 org. apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method.java:597) at org。

我已经尝试使用“test.wav”、“/test.wav”,在 src/test/resources 中创建测试包并在那里复制文件并尝试“/MyPackage/test.wav”、“MyPackage/test.哇”。总是一样的答案。它找不到文件。

我试过 Run as... JUnit Test 和相同的 asnwers。En el pom.xml 我有

<build>
...
<resources>
  <resource>
    <directory>.../src/main/resources</directory>
  </resource>
</resources>
<testResources>
  <testResource>
    <directory>.../src/test/resources</directory>
  </testResource>
</testResources>
<directory>.../target</directory>

真的,谢谢你能给我的任何帮助。

4

3 回答 3

1

我不知道它是否仍然相关,但是:
假设您在 src/test/resources/tree.png 下有一个图像。使用标准的 Maven 设置,您可以在代码中引用它,如下所示:

img = ImageIO.read(new File("src/test/resources/tree.png"));

这是相对于当前项目位置的。

如果您将项目打包到 jar 文件中并希望在运行代码中使用资源,您还应该查看 Java ResourceLoader。这是一个起点:java - 你如何制作资源加载器?

于 2013-06-27T09:47:43.623 回答
0

为什么要更改资源位置的 Maven 默认值?“……”应该指什么?

我的建议: 1. 删除自定义资源配置 2. 将所需文件放在 src/test/resources 3. 使用 getResourceAsStream("/test.wav"); 引用它

于 2013-02-07T17:07:58.433 回答
0

这对我有用。我需要从 src/test/resource/WsqImages 读取图像文件

  File filepath= new File("src" + File.separator + "test" + File.separator
    + "resources" + File.separator + "WSQImages");

    try (InputStream is = new BufferedInputStream(new FileInputStream(
        filepath))) {

    Bitmap bitmap = WSQJavaUtil.getBitMap(IOUtils.toByteArray(is));
    assertNotNull("BitMap Creation faild", bitmap);
    } catch (IOException e) {
    LOG.error(e.getMessage(), e);
    throw new WSQDecompressionException(e.getMessage(), e);

    }
于 2014-01-29T11:51:21.380 回答