2011-12-13 231 views
2

我在Windows XP的命令行上使用Ant运行JUnit测试。JUnit失败,但没有测试报告失败

在某些运行中,通过运行所有测试,我会得到一条指向特定测试类的消息,但是该类中的所有测试都报告为已在控制台输出和XML文件。

该类不包含非确定性,不应该有任何副作用。没有理由会导致内存不足。

什么会导致这些奇怪的构建失败?


更新

我怀疑这会有所帮助,但这里是运行结束时,它失败(匿名修改后的目录和包名):

C:\proj\er20\rr> ant clean build test 

<snip/> 

[junit] Running com.example.PathUTest 
[junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 7.5 sec 

BUILD FAILED 
C:\proj\er20\common\build.xml:385: The following error occurred while executing this line: 
C:\proj\er20\rr\build.xml:58: Test com.example.PathUTest failed 

更新2

我终于设法使-verbose启用失败。这里是(手抄的)堆栈跟踪:

BUILD FAILED 
C:\proj\er20\common\build.xml:385: The following error occurred while executing this line: 
C:\proj\er20\rr\build.xml:58: Test com.example.PathUTest failed 
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:541) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418) 
    at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.performTasks(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1298) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1181) 
    at org.apache.tools.ant.Main.runBuild(Main.java:698) 
    at org.apache.tools.ant.Main.startAnt(Main.java:199) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 
Caused by: C:\proj\er20\rr\build.xml:58: Test com.example.PathUTest failed 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.actOnTestResult(JUnitTask.java:1712) 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.execute(JUnitTask.java:820) 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.executeOrQueue(JUnitTask.java:1657) 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.execute(JUnitTask.java:764) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.performTasks(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) 
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416) 
    ... 17 more 
--- Nested Exception --- 
C:\proj\er20\rr\build.xml:58 Test com.example.PathUTest failed 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.actOnTestResult(JUnitTask.java:1712) 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.execute(JUnitTask.java:820) 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.executeOrQueue(JUnitTask.java:1657) 
    at org.apache.tools.ant.taskdefs.optionl.junit.JUnitTask.execute(JUnitTask.java:764) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.perform(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) 
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416) 
    at org.apache.tools.ant.tskdefs.CallTarget.execute(CallTarget.java:105) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Source Unknown) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.performTasks(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1298) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1181) 
    at org.apache.tools.ant.Main.runBuild(Main.java:698) 
    at org.apache.tools.ant.Main.startAnt(Main.java:199) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 

Total time: 1 minute 27 seconds 

这里是相关的Ant目标:

<target name="test"> 
    <taskdef resource="net/sf/antcontrib/antcontrib.properties"> 
     <classpath> 
      <pathelement location="../buildsupport/lib/ant-contrib-1.0b3.jar"/> 
     </classpath> 
    </taskdef> 

    <!-- line 58 is the next line --> 
    <junit printsummary="yes" fork="yes" haltonfailure="yes" dir="${test-dir}" showoutput="yes"> 
     <jvmarg value="-Xmx10200M"/> 
     <jvmarg value="-Xms600M"/> 
     <jvmarg value="-server"/> 
     <jvmarg value="-Dlog4j.configuration=file:log4j.xml"/> 
     <jvmarg value="-XX:CompileCommand=exclude,com.example.GtaCore,expandLabel"/> 
     <env key="LD_LIBRARY_PATH" path="${env.LD_LIBRARY_PATH}:${test-dir}/native_lib"/> 
     <jvmarg value="-Djava.library.path=./native_lib"/> 
     <formatter type="xml"/> 
     <classpath> 
      <!-- classpath items --> 
     </classpath> 
     <batchtest> 
      <fileset includes="**/*Test.class" excludes="**/*$$*.class"/> 
     </batchtest> 
    </junit> 

    <junitreport> 
     <!-- config --> 
    </junitreport> 
    <echo> finished suite</echo> 
</target> 

可能的原因和解决方法

我们发现,在内心深处在我们调用的代码中,正在显示一个在另一个线程中运行的错误调试GUI。由于禁用此GUI的显示,我们还没有看到这个问题。

+3

后的记录错误的一大块。 – Argyle 2011-12-13 19:33:13

+0

这些*建立*失败或*测试*失败你看到? – 2011-12-13 19:38:05

回答

1

也许在RR \ build.xml文件(你有2个生成文件)在第58行有

<fail message="Test com.example.PathUTest failed"/>