我正在Eclipse中开发Java项目,目前正在为它编写单元测试。
为了获得测试结果的良好交互式摘要,我通过
生成build.xml文件 文件>>导出>> Ant Buildfiles>> “检查我的项目”并按完成
然后,我使用Eclipse中的Edit Configuration视图配置构建文件,并选择我想要运行的测试(套件)并使用junitreport完成。
除了在通过Ant运行时找不到配置.txt文件这一小事实外,这非常有效。如果我运行测试的src文件,一切都按预期工作。
我将文件读取到像这样的
的InputStream//CONFIG = "CONFIG/config.txt"
public static InputStream getConfigInputStream() throws IOException{
File file = new File(CONFIG);
return new FileInputStream(file);
}
以下是控制台的示例输出:
NameValidationTest:
[junit] Running se.st.dsg.pc.test.junit_test.tests.unit_tests.NameValidationTest
[junit] Tests run: 4, Failures: 2, Errors: 1, Skipped: 0, Time elapsed: 0,123 sec
[junit] Error:
[junit] java.io.FileNotFoundException: CONFIG\config.txt (The system cannot find the file specified)
[junit] at java.io.FileInputStream.open0(Native Method)
[junit] at java.io.FileInputStream.open(Unknown Source)
[junit] at java.io.FileInputStream.<init>(Unknown Source)
[junit] at se.st.dsg.input_stream_source.InputStreamSource.getConfigInputStream(InputStreamSource.java:26)
[junit] at se.st.dsg.core.syst_params.SystParamsParser.parseConfig(SystParamsParser.java:40)
[junit] at se.st.dsg.pc.test.junit_test.tests.unit_tests.NameValidationTest.setup(NameValidationTest.java:20)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[junit] at java.lang.reflect.Method.invoke(Unknown Source)
[junit] at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
[junit] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[junit] at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
[junit] at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
[junit] at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
[junit] at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:535)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1182)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1033)
[junit] Test se.st.dsg.pc.test.junit_test.tests.unit_tests.NameValidationTest FAILED
我想强调的是,在Eclipse中正常编译和运行时不会发生此错误,并且在使用Ant时,不读取.txt文件的测试会按预期工作。我是否必须告诉Ant文件的位置,还是有其他方法可以解决这个问题?