2015-12-21 47 views
1

我想從ant build.xml文件生成jmockit覆蓋率報告,我嘗試了下面的解決方案,但我沒有得到成功。jmockit覆蓋率報告步驟從ant build.xml文件

Combined test coverage report with jMockit

Jmockit is not merging two coverage.ser files generated using coverage-output=serial

可以請你給我使用,我可以生成螞蟻的build.xml目標jmockit覆蓋率報告的方式嗎?

我的build.xml文件看起來象下面這樣:

<target name="tests" depends="testscompile,mkdirtests_clean,mkdirtests"> 
    <junit fork="yes" forkmode="once" haltonfailure="no" printsummary="yes" > 
    <jvmarg value="-javaagent:../JUnitlib/jmockit.jar"/> 

    <sysproperty key="jmockit-coverage-output" value="serial-append"/> 
    <sysproperty key="jmockit-coverage-outputDir" value="D:/report"/> 
    <sysproperty key="jmockit-coverage-srcDirs" value="${src}"/> 
    <sysproperty key="jmockit-coverage-metrics" value="all"/> 


    <classpath> 
      <pathelement location="${classes}" />  
       <fileset dir="../JUnitlib/"> 
        <include name="**/*.jar"/> 
       </fileset> 
       <fileset dir="../WebContent/WEB-INF/lib"> 
        <include name="**/*.jar"/> 
       </fileset> 
       <fileset dir="${tomcat.root}"> 
        <include name="lib/log4j-1.2.17.jar"/> 
       </fileset> 
      </classpath> 
    <batchtest> 
     <fileset dir="${classes}"> 
      <include name="**/*Test.class" /> 
     </fileset> 
    </batchtest> 


    </junit> 
    <java fork="yes" dir="D:/report" jar="../JUnitlib/jmockit-coverage.jar"> 
      <arg line="-Djmockit-coverage-output=html D:/report"/> 

    </java> 
</target> 

它給我以下錯誤:

java.lang.IllegalArgumentException: No class with name "org.apache.catalina.connector.ClientAbortException" found 
[junit]  at mockit.internal.util.ClassLoad.loadClass(ClassLoad.java:57) 
[junit]  at mockit.internal.util.ClassLoad.loadByInternalName(ClassLoad.java:31) 
[junit]  at mockit.internal.util.ClassLoad.getSuperClass(ClassLoad.java:146) 
[junit]  at mockit.internal.util.ClassLoad.actualSuperClass(ClassLoad.java:177) 
[junit]  at mockit.internal.util.ClassLoad.whichIsSuperClass(ClassLoad.java:167) 
[junit]  at mockit.external.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1694) 
[junit]  at mockit.external.asm.ClassWriter.getMergedType(ClassWriter.java:1661) 
[junit]  at mockit.external.asm.Frame.merge(Frame.java:1426) 
[junit]  at mockit.external.asm.Frame.merge(Frame.java:1325) 
[junit]  at mockit.external.asm.MethodWriter.visitMaxs(MethodWriter.java:1475) 
[junit]  at mockit.external.asm.MethodVisitor.visitMaxs(MethodVisitor.java:804) 
[junit]  at mockit.external.asm.ClassReader.readCode(ClassReader.java:1554) 
[junit]  at mockit.external.asm.ClassReader.readMethod(ClassReader.java:1017) 
[junit]  at mockit.external.asm.ClassReader.accept(ClassReader.java:693) 
[junit]  at mockit.external.asm.ClassReader.accept(ClassReader.java:506) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClassForCoverage(ClassModification.java:142) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClassForCoverage(ClassModification.java:217) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClass(ClassModification.java:192) 
[junit]  at mockit.coverage.CodeCoverage.transform(CodeCoverage.java:127) 
[junit]  at sun.instrument.TransformerManager.transform(TransformerManager.java:188) 
[junit]  at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428) 
[junit]  at java.lang.ClassLoader.defineClass1(Native Method) 
[junit]  at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
[junit]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
[junit]  at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
[junit]  at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
[junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
[junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
[junit]  at java.security.AccessController.doPrivileged(Native Method) 
[junit]  at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[junit]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[junit]  at java.lang.Class.forName0(Native Method) 
[junit]  at java.lang.Class.forName(Class.java:348) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadClass(ClassesNotLoaded.java:70) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClass(ClassesNotLoaded.java:62) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:47) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.gatherCoverageData(ClassesNotLoaded.java:32) 
[junit]  at mockit.coverage.OutputFileGenerator.generate(OutputFileGenerator.java:82) 
[junit]  at mockit.coverage.CodeCoverage$1.run(CodeCoverage.java:80) 
[junit] java.lang.IllegalArgumentException: No class with name "org.apache.catalina.connector.ClientAbortException" found 
[junit]  at mockit.internal.util.ClassLoad.loadClass(ClassLoad.java:57) 
[junit]  at mockit.internal.util.ClassLoad.loadByInternalName(ClassLoad.java:31) 
[junit]  at mockit.internal.util.ClassLoad.getSuperClass(ClassLoad.java:146) 
[junit]  at mockit.internal.util.ClassLoad.actualSuperClass(ClassLoad.java:177) 
[junit]  at mockit.internal.util.ClassLoad.whichIsSuperClass(ClassLoad.java:161) 
[junit]  at mockit.external.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1694) 
[junit]  at mockit.external.asm.ClassWriter.getMergedType(ClassWriter.java:1661) 
[junit]  at mockit.external.asm.Frame.merge(Frame.java:1426) 
[junit]  at mockit.external.asm.Frame.merge(Frame.java:1325) 
[junit]  at mockit.external.asm.MethodWriter.visitMaxs(MethodWriter.java:1475) 
[junit]  at mockit.external.asm.MethodVisitor.visitMaxs(MethodVisitor.java:804) 
[junit]  at mockit.external.asm.ClassReader.readCode(ClassReader.java:1554) 
[junit]  at mockit.external.asm.ClassReader.readMethod(ClassReader.java:1017) 
[junit]  at mockit.external.asm.ClassReader.accept(ClassReader.java:693) 
[junit]  at mockit.external.asm.ClassReader.accept(ClassReader.java:506) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClassForCoverage(ClassModification.java:142) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClassForCoverage(ClassModification.java:217) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClass(ClassModification.java:192) 
[junit]  at mockit.coverage.CodeCoverage.transform(CodeCoverage.java:127) 
[junit]  at sun.instrument.TransformerManager.transform(TransformerManager.java:188) 
[junit]  at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428) 
[junit]  at java.lang.ClassLoader.defineClass1(Native Method) 
[junit]  at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
[junit]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
[junit]  at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
[junit]  at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
[junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
[junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
[junit]  at java.security.AccessController.doPrivileged(Native Method) 
[junit]  at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[junit]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[junit]  at java.lang.Class.forName0(Native Method) 
[junit]  at java.lang.Class.forName(Class.java:348) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadClass(ClassesNotLoaded.java:70) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClass(ClassesNotLoaded.java:62) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:47) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.gatherCoverageData(ClassesNotLoaded.java:32) 
[junit]  at mockit.coverage.OutputFileGenerator.generate(OutputFileGenerator.java:82) 
[junit]  at mockit.coverage.CodeCoverage$1.run(CodeCoverage.java:80) 
[junit] java.lang.IllegalArgumentException: No class with name "org.apache.catalina.connector.ClientAbortException" found 
[junit]  at mockit.internal.util.ClassLoad.loadClass(ClassLoad.java:57) 
[junit]  at mockit.internal.util.ClassLoad.loadByInternalName(ClassLoad.java:31) 
[junit]  at mockit.internal.util.ClassLoad.getSuperClass(ClassLoad.java:146) 
[junit]  at mockit.internal.util.ClassLoad.actualSuperClass(ClassLoad.java:177) 
[junit]  at mockit.internal.util.ClassLoad.whichIsSuperClass(ClassLoad.java:161) 
[junit]  at mockit.external.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1694) 
[junit]  at mockit.external.asm.ClassWriter.getMergedType(ClassWriter.java:1661) 
[junit]  at mockit.external.asm.Frame.merge(Frame.java:1426) 
[junit]  at mockit.external.asm.Frame.merge(Frame.java:1325) 
[junit]  at mockit.external.asm.MethodWriter.visitMaxs(MethodWriter.java:1475) 
[junit]  at mockit.external.asm.MethodVisitor.visitMaxs(MethodVisitor.java:804) 
[junit]  at mockit.external.asm.ClassReader.readCode(ClassReader.java:1554) 
[junit]  at mockit.external.asm.ClassReader.readMethod(ClassReader.java:1017) 
[junit]  at mockit.external.asm.ClassReader.accept(ClassReader.java:693) 
[junit]  at mockit.external.asm.ClassReader.accept(ClassReader.java:506) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClassForCoverage(ClassModification.java:142) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClassForCoverage(ClassModification.java:217) 
[junit]  at mockit.coverage.modification.ClassModification.modifyClass(ClassModification.java:192) 
[junit]  at mockit.coverage.CodeCoverage.transform(CodeCoverage.java:127) 
[junit]  at sun.instrument.TransformerManager.transform(TransformerManager.java:188) 
[junit]  at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428) 
[junit]  at java.lang.ClassLoader.defineClass1(Native Method) 
[junit]  at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
[junit]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
[junit]  at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
[junit]  at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
[junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
[junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
[junit]  at java.security.AccessController.doPrivileged(Native Method) 
[junit]  at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[junit]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[junit]  at java.lang.Class.forName0(Native Method) 
[junit]  at java.lang.Class.forName(Class.java:348) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadClass(ClassesNotLoaded.java:70) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClass(ClassesNotLoaded.java:62) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:47) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.loadAdditionalClasses(ClassesNotLoaded.java:44) 
[junit]  at mockit.coverage.modification.ClassesNotLoaded.gatherCoverageData(ClassesNotLoaded.java:32) 
[junit]  at mockit.coverage.OutputFileGenerator.generate(OutputFileGenerator.java:82) 
[junit]  at mockit.coverage.CodeCoverage$1.run(CodeCoverage.java:80) 
[junit] java.lang.IllegalArgumentException: No class with name "com.microsoft.sqlserver.jdbc.SQLServerException" found 

我覺得它給我的錯誤,因爲jmockit覆蓋jar文件沒有正確load.can的你請指導我這個...

+0

你面對什麼問題? –

+0

@Sabirkhan,我在這裏添加了代碼和錯誤,我可以,請你檢查一下..? –

回答

0

改變你的參數指定在Generating an aggregate report from multiple data files

從方向1和DIR個
<java fork="yes" dir="D:/report" jar="../JUnitlib/jmockit-coverage.jar"> 
    <jvmarg line="-Djmockit-coverage-output=html/> 
    <arg line="-Dcoverage-output=html Dir1 Dir2"/> 
</java> 

SER文件將被合併,並最終輸出將在d:/報告

,如果你得到錯誤的路線,<arg line="-Dcoverage-output=html Dir1 Dir2"/>嘗試刪除-Dcoverage輸出= HTML了。如果錯誤仍然存​​在,請嘗試爲jar=提供絕對路徑。

相關問題