2012-11-15 251 views
2

我在使用ant运行测试时说服一些新代码与我的JUnit测试很好地发挥作用有问题。Junit测试用蚂蚁失败,成功在eclipse中:actOnTestResult失败

我有一些使用适用于Java的AWS开发工具包与AWS(Amazon Web Services)交互的代码。当我的Junit测试遇到引用此SDK中任何内容的代码时,测试失败。当我通过时,代码本身工作正常,这是先前存在且成功的Junit测试失败。

我已经使用-v选项从命令行运行ant,并且我可以看到用于Java SDK的jar文件包含在类路径中。 Ant和JUnit也在那里。 -v选项显示失败正在actOnTestResult中报告,但这不是发生错误的地方。

蚂蚁-v的完整输出:

Apache Ant(TM) version 1.8.2 compiled on December 3 2011 
Trying the default build file: build.xml 
Buildfile: /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build.xml 
Detected Java version: 1.6 in: /usr/lib/jvm/jdk1.6.0_32/jre 

Detected OS: Linux 

parsing buildfile /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build.xml with URI = file:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build.xml 

Project base dir set to: /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy 

parsing buildfile jar:file:/usr/share/ant/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/usr/share/ant/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file 

Importing file /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/one-jar-ant-task.xml from /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build.xml 

Overriding previous definition of reference to ant.projectHelper 

parsing buildfile /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/one-jar-ant-task.xml with URI = file:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/one-jar-ant-task.xml 

Override ignored for property "one-jar.dist.dir" 

Overriding previous definition of reference to ant.projectHelper 

Build sequence for target(s) `junit' is [init, compile, junit] 

Complete build sequence is [init, compile, junit, input-cmdlineargs, jar, onejar, run-cmdline, input-fileprops, run-hudson, help, clean, usage, input-eclipseargs, run-eclipse, ] 


init: 

[echo] Creating build directories... 

[mkdir] Skipping /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build because it already exists. 

[mkdir] Skipping /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build/class because it already exists. 

[mkdir] Skipping /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build/jar because it already exists. 

[mkdir] Skipping /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/dist because it already exists. 


compile: 

[echo] Compiling source files... 

[javac] /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/src/AwsCredentials.properties skipped - don't know how to handle it 

[javac] com/sportingindex/tradingservices/hadoop/aws/S3DataExtractionDeploy.java omitted as /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build/class/com/sportingindex/tradingservices/hadoop/aws/S3DataExtractionDeploy.class is up to date. 

[javac] com/sportingindex/tradingservices/test/hadoop/aws/JUnit_S3DataExtractionDeploy.java omitted as /home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build/class/com/sportingindex/tradingservices/test/hadoop/aws/JUnit_S3DataExtractionDeploy.class is up to date. 


junit: 

[junit] Implicitly adding /usr/share/ant/lib/junit.jar:/usr/share/java/ant-launcher-1.8.2.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-junit4.jar to CLASSPATH 

[junit] Executing '/usr/lib/jvm/jdk1.6.0_32/jre/bin/java' with arguments: 

[junit] '-classpath' 

[junit] '/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build/class:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/aws-java-sdk-1.3.7.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/commons-codec-1.6.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/commons-collections-3.2.1.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/commons-logging-1.0.4.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/httpclient-4.1.3.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/httpcore-4.2.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/junit.jar:/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/lib/one-jar-ant-task-0.97.jar:/usr/share/ant/lib/junit.jar:/usr/share/java/ant-launcher-1.8.2.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-junit4.jar' 

[junit] 'org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner' 

[junit] 'com.sportingindex.tradingservices.test.hadoop.aws.JUnit_S3DataExtractionDeploy' 

[junit] 'filtertrace=true' 

[junit] 'haltOnError=false' 

[junit] 'haltOnFailure=true' 

[junit] 'formatter=org.apache.tools.ant.taskdefs.optional.junit.SummaryJUnitResultFormatter' 

[junit] 'showoutput=false' 

[junit] 'outputtoformatters=true' 

[junit] 'logfailedtests=true' 

[junit] 'logtestlistenerevents=false' 

[junit] 'crashfile=/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/junitvmwatcher8947588636768864827.properties' 

[junit] 'propsfile=/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/junit7746049445603740673.properties' 

[junit] 

[junit] The ' characters around the executable and arguments are 

[junit] not part of the command. 

[junit] Running com.sportingindex.tradingservices.test.hadoop.aws.JUnit_S3DataExtractionDeploy 

[junit] Tests run: 4, Failures: 0, Errors: 4, Time elapsed: 0.756 sec 


BUILD FAILED 

/home/tonyb1/Dev/Workspace/S3DataExtractionDeploy/build.xml:218: Test com.sportingindex.tradingservices.test.hadoop.aws.JUnit_S3DataExtractionDeploy failed 

at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.actOnTestResult(JUnitTask.java:1954) 

at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:854) 

at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1899) 

at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:800) 

at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 

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:106) 

at org.apache.tools.ant.Task.perform(Task.java:348) 

at org.apache.tools.ant.Target.execute(Target.java:390) 

at org.apache.tools.ant.Target.performTasks(Target.java:411) 

at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 

at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 

at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 

at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 

at org.apache.tools.ant.Main.runBuild(Main.java:809) 

at org.apache.tools.ant.Main.startAnt(Main.java:217) 

at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 

at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 


Total time: 2 seconds 

如果我运行或调试通过Eclipse的测试,它的罚款。只有在使用蚂蚁运行测试时才会发生错误。

+1

QUICK问题:你有'includeantruntime'设置为false?测试输出文件中有什么?它应该在那里列出错误。也许是超时或内存不足? –

+0

感谢您的快速回复David。 “junit”声明中未包含'includeantruntime';设置它为真,我得到相同的错误,将其设置为false我会在ant -v输出中看到“Test ... failed(crash)”。 –

+0

不知道“测试输出文件”在哪里 - 是自动创建的,还是必须在我的build.xml中设置选项? –

回答

-1

您必须比较蚂蚁和Eclipse之间的类路径。在我的情况下,我的ant classpath中有ant jar,所以如果使用includeruntime = true,我需要在ant文件中使用ant。而其他人,你也应该检查你的junit运行时类路径中的测试类和类路径。