使用Ant生成XML报告,但如何?

时间:2012-04-10 06:30:59

标签: xml ant junit

目前我想在Jenkins获得测试结果。我正在处理的唯一问题是我可以从我的Junit测试中获取XML报告。所以我的问题是:

  1. 是否有可能与Jenkins一起开始测试并获得结果?

  2. 或者是否可以使用Ant生成xml报告,以及如何生成?因为我有这个,但不理解它100%:

  3. 我测试的路径:

    • nl \ company \ cms \ plugin \ test \ AllTests.java(Test Suite)
    • CopyOfMyTestClass.java(单一测试类)
    • MyTestClass.java(单一测试类)

    我的图书馆的路径:

    • LIB \的junit-4.10.jar
    • lib \ ant.jar(这个在我的插件中是必需的,可能也是构建XML报告所必需的吗?)

    我从JUnit网站获取此代码:http://junit.sourceforge.net/doc/faq/faq.htm#running_6


    我理解以下内容: ${test.reports} =您希望测试报告的位置 ${classes} = .java文件已构建为.class文件的bin目录。是否也可以将它们转发到.java文件?

    但我不知道如何处理以下事项:

    <classpath refid="test.classpath" />
    

    谢谢!

    更新

    他找到了我的3个测试类并且他建立了一个报告,但我在报告的这三个类中得到了同样的错误:

    test.AllTests

    java.lang.ClassNotFoundException: test.AllTests
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    

    这是我的build.xml代码:

    <property name="basedir" value="C:/CMSdot2"/>
    <property name="classes" value="C:/CMSdot2/dotCMS/WEB-INF/classes/nl/company/dotcms/plugin"/>
    <property name="test.reports" value="${basedir}/dotCMS/"/>
    <target name="test-html">
     <junit fork="yes" printsummary="no" haltonfailure="no">
      <batchtest fork="yes" todir="${test.reports}" >
       <fileset dir="${classes}">
        <include name="**/*Test*.class" />
       </fileset>
      </batchtest>
      <formatter type="xml" />
      <classpath id="test.classpath">
       <pathelement location="lib/junit-4.10.jar"/>
      </classpath>
     </junit>
     <junitreport todir="${test.reports}">
      <fileset dir="${test.reports}">
       <include name="TEST-*.xml" />
      </fileset>
      <report todir="${test.reports}" />
     </junitreport>
    </target>
    

1 个答案:

答案 0 :(得分:1)

  1. 您必须指定${classes}指向类。 Java需要类来执行program / junit,因此.java文件不会这样做。
  2. 如果您有运行测试所需的外部库(如log4j或apache commons),则需要<classpath refid="test.classpath" />来包含您的类和任何eyternal库。例如:

    <classpath id="test.classpath">
        <pathelement location="${classes}" />
        <pathelement location="lib/ther.jar"/>
    </classpath>