1

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

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

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

我的测试路径:

  • nl\company\cms\plugin\test\AllTests.java(测试套件)
  • 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>
4

1 回答 1

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

    <classpath id="test.classpath">
        <pathelement location="${classes}" />
        <pathelement location="lib/ther.jar"/>
    </classpath>
    
于 2012-04-10T07:25:50.610 回答