2012-04-10 7 views
0

Im Moment möchte ich die Testergebnisse in Jenkins bekommen. Das einzige Problem, mit dem ich es zu tun habe, ist, dass ich die XML-Berichte von meinen Junit-Tests bekommen kann. Also meine Frage ist:Generieren Sie XML-Berichte mit Ant, aber wie?

  1. Gibt es eine Möglichkeit, die Tests mit Jenkins zu starten und die Ergebnisse zu erhalten?

  2. Oder ist es möglich, die XML-Berichte mit Ant zu generieren, und wie? Da hatte ich das aber nicht verstehen, es zu 100%:

Weg zu meinen Tests:

  • nl \ company \ cms \ plugin \ test \ AllTests.java (Test Suite)
  • CopyOfMyTestClass.java (Einzeltest-Klasse)
  • MyTestClass.java (Einzeltest-Klasse)

Weg zu meinen Bibliotheken:

012.351.
  • lib \ junit-4.10.jar
  • lib \ ant.jar (Diese in meinem Plugin erforderlich ist, kann auch für den Aufbau von XML-Berichte erforderlich sein?)

Dieser Code I Suche von die JUnit-Website: http://junit.sourceforge.net/doc/faq/faq.htm#running_6


ich verstehe folgendes: ${test.reports} = Ort, an dem Sie Ihren Test ${classes} wollen berichtet = die bin-Verzeichnis, in dem die .java-Dateien bereits in .class-Dateien enthalten sind. Ist es auch möglich, sie an die .java-Dateien weiterzuleiten?

Aber ich weiß nicht, was mit den folgenden Funktionen ausführen:

<classpath refid="test.classpath" /> 

Danke schon!

aktualisieren

Er fand meine 3 testclasses und er einen Bericht erstellen, aber ich habe den gleichen Fehler in diesen drei Klassen in dem Bericht:

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) 

Das ist mein build.xml-Code:

<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> 

Antwort

1
  1. Sie müssen ${classes} angeben, um auf die Klassen zu verweisen. Java benötigt Klassen, um Programme/junit auszuführen, so dass die Datei .java nicht funktioniert.
  2. Sie benötigen <classpath refid="test.classpath" />, um Ihre Klassen und alle eyernalen Bibliotheken einzuschließen, wenn Sie externe Bibliotheken (wie log4j oder apache commons) haben, die für die Ausführung Ihrer Tests benötigt werden.Zum Beispiel:

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

ich bin immer zu schließen. Er fand die Testklassen und er macht einen Bericht. Aber in dem Bericht sagte er: java.lang.ClassNotFoundException Ich habe den ersten Beitrag aktualisiert – Gynnad

+0

ist Ihr Paket testen.AllTests ODER test.AllTests? Es scheint etwas Verwirrung mit den Klassen Dir zu geben, nehme ich an. – oers

+0

Es ist das Paket Test, nicht testen Also ist es richtig, dass er test.AllTests geht. Ich habe es im ersten Post geändert! – Gynnad