使用Junit的EMMA,我应该使用检测类或java类进行测试吗?

它说,我已经为emma / junit的ANT脚本编写本教程

元素中,更改实际类的位置,以便指向$ {instr.dir}属性而不是普通的target / classes文件夹。

这是我的针对Apache Ant的build.xml的emma部分( pastebin链接到完整的build.xml)

                            

emmaJUNIT失败结果的构建部分结果,指向${instr.dir}

  emmatest: [instr] processing instrumentation path ... [instr] instrumentation path processed in 109 ms [instr] [6 class(es) instrumented, 0 resource(s) copied] [instr] metadata merged into [C:\Users\Michael\workspace\log4jassignment.s06005586\build\emma-reports\metadata.emma] {in 42 ms} [junit] Test test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest FAILED 

junitreport的构建部分结果: JUNIT Pass Result,指向real classes ${build.classes}

 test: [junit] Running test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.504 sec [junit] Running test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0.526 sec 

我想知道为什么我的JUNIT测试AppenderLayoutTest与emma失败但是传递了junit。 我也非常有信心我的coverage file没有被创建,因为AppenderLayoutTest的JUNIT失败了。

我用错误的类测试了吗? 或者我错过了什么?

更新:2012年8月28日下午6:21

然后我改变了

  

    

并且emma的更新的Build Section结果: JUNIT失败结果,指向${instr.dir}其中..

 emmatest: [instr] processing instrumentation path ... [instr] instrumentation path processed in 105 ms [instr] [6 class(es) instrumented, 0 resource(s) copied] [instr] metadata merged into [C:\Users\Michael\workspace\log4jassignment.s06005586\build\emma-reports\metadata.emma] {in 89 ms} [junit] TEST test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest FAILED [junit] TEST test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest FAILED [junit] Tests FAILED 

更新:下午7:02

我添加了 ,这是输出

 emmatest: [instr] [EMMA v2.1, build 5320 (stable) (2005/06/20 22:08:27)] [instr] instrumentation path: [instr] { [instr] C:\Users\Michael\workspace\log4jassignment.s06005586\build\classes [instr] } [instr] instrumentation output mode: copy [instr] metadata output file: C:\Users\Michael\workspace\log4jassignment.s06005586\build\emma-reports\metadata.emma [instr] metadata output merge mode: true [instr] processing dir path entry [C:\Users\Michael\workspace\log4jassignment.s06005586\build\classes] ... [instr] instrumentation path processed in 147 ms [instr] [6 class(es) instrumented, 0 resource(s) copied] [instr] metadata contains 6 entries [instr] metadata merged into [C:\Users\Michael\workspace\log4jassignment.s06005586\build\emma-reports\metadata.emma] {in 49 ms} [junit] Running test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest [junit] Testsuite: test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec [junit] Caused an ERROR [junit] Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V [junit] java.lang.ClassFormatError: Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V [junit] at java.lang.Class.forName0(Native Method) [junit] at java.lang.Class.forName(Unknown Source) [junit] TEST test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest FAILED [junit] Running test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest [junit] Testsuite: test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec [junit] Caused an ERROR [junit] Expecting a stackmap frame at branch target 11 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest.()V at offset 4 [junit] java.lang.VerifyError: Expecting a stackmap frame at branch target 11 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest.()V at offset 4 [junit] at java.lang.Class.forName0(Native Method) [junit] at java.lang.Class.forName(Unknown Source) [junit] TEST test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest FAILED [junit] Tests FAILED 

什么是[junit] java.lang.ClassFormatError: Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V

你能尝试更换吗?

  

    

最后,我会要求你在测试中加入一些sysout ,看看测试中出了什么问题。 这可能与我觉得的配置有关。

查看您分享的最新跟踪似乎可以使用

 -XX:-UseSplitVerifier 

作为VM参数来摆脱与JDK7相关的错误。

或者检查一下