我知道这里有很多问题和答案,但我已经尝试了所有我读过的内容,你可以肯定它已经很多了。 我正在使用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中,我检查过它是否已复制到target / test-classes。 当我运行为... Maven测试我得到: ... 测试失败:testCheckAudio(edu.gerher.askitcollector.test.services.AudioServiceImplTest) ... 无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.10:test(default-test)on project ...
测试运行:16,失败:1,错误:0,跳过:0,经过的时间:0.039秒<<<失败! testCheckAudio(MyPackage.AudioServiceImplTest)经过的时间:0.005秒<<<失败! java.lang.AssertionError 在edu.gerher.askitcollector.test.services.AudioServiceImplTest.testCheckAudio(AudioServiceImplTest.java:238) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在java.lang.reflect.Method.invoke(Method.java:597) 在org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) 在org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) 在org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在java.lang.reflect.Method.invoke(Method.java:597) 在org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 在org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke(ProviderFactory.java:110) 在org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 在org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 在org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
我尝试过“test.wav”,“/ test.wav”,在src / test / resources中创建测试包,并在那里复制文件并尝试“/MyPackage/test.wav”,“MyPackage /test.wav”。总是一样的答案。它无法找到该文件。
我已经尝试过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>
真的,谢谢你能给我的任何帮助。
答案 0 :(得分:1)
我不知道它是否仍然相关但是:
假设您在src / test / resources / tree.png下有一个图像。使用标准maven设置,您可以在代码中引用它:
img = ImageIO.read(new File("src/test/resources/tree.png"));
这与当前项目位置有关。
如果将项目打包在jar文件中并希望使用正在运行的代码中的资源,那么还应该查看Java ResourceLoader。这是一个起点:java - how do you make a resourceloader?
答案 1 :(得分:0)
为什么要更改资源位置的Maven默认值?应该“......”指向什么?
我的建议: 1.删除自定义资源配置 2.将所需文件放在src / test / resources中 3.用getResourceAsStream(“/ test.wav”);
引用它答案 2 :(得分: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);
}