2010-02-01 9 views
13

Ich möchte Unit Testbericht im HTML-Format automatisch für Android-Anwendung auf Hudson Continuous Integration Server generieren.Wie Android Testbericht automatisch in HTML generieren

Daher versuche ich, Testfälle zuerst auszuführen und Testergebnisdateien im xml-Format zu sammeln. Dann verwende ich JUnitReport Task, um die XML-Ergebnisdateien in das HTML-Format umzuwandeln.

Ich führe Testfälle durch Android Instrumentation Framework. Es bietet jedoch nur ausführliche Ausgabeinformationen anstelle des standardmäßigen JUnit-XML-Formats. Ich habe keine Ahnung, wie ich einen HTML Unit Test Report ohne JUnit XML Ergebnisdateien erzeugen kann.

Wenn ich Testfälle mit Eclipse ausfühle, kann ich Ergebnisse in XML-Dateien mit zeitaufwendiger Information pro Testfall exportieren. Diese XML-Dateien können von JUnitReport Task korrekt in HTML umgewandelt werden. Als Ergebnis scheint es möglich zu sein, das Testergebnis mit zeitaufwendiger Information zu sammeln.

Gibt es eine Möglichkeit, die Standard-JUnit-XML-Ergebnisdatei automatisch nach dem Ausführen von Testfällen auf dem Android-Instrumentierungsframework zu erhalten?

Antwort

9

Wir ähnliches Problem in unserer Gesellschaft hatten. Wir haben alle verfügbaren Open-Source-Lösungen überprüft und keine war wirklich perfekt. Also haben wir eine Lösung dafür entwickelt und eine Open-Source-Lösung entwickelt. Ich sage immer noch nicht ein "ultimatives", aber sicherlich viel besser als entweder Athena oder der Python-Reporter oder jede Nach-Test-Analyse. Sie können es hier finden: http://code.google.com/p/the-missing-android-xml-junit-test-runner/

Es bietet:

  • separate XML-Datei für jedes Paket beteiligt
  • XML-Dateien auf dem Gerät erzeugt werden (müssen adb pull'ed nach dem Test sein)
  • Zeitpunkt der Tests wird vollständig unterstützt
  • wir volle Stack-Trace sind in Ausfall/Fehlerfall gemeldet

Anstatt Java-Quellcode zu analysieren (wie in Athena) oder die Ausgabe zu analysieren (das Python-Skript), haben wir den Android-Instrumentierungsläufer erweitert. So erhalten wir alle Vorteile der Verwendung von Standard-Befehlszeilenoptionen für Testauswahl, Abdeckungsfreigabe usw. - alle hier beschrieben: http://developer.android.com/guide/developing/testing/testing_otheride.html#RunTestsCommand.

Wir konnten den Code erfolgreich unter Verwendung von Standard-Testregeln mit Abdeckung, die von Emma analysiert wurden, ausführen, alles schön in Jenkins berichtet.

+0

Probieren Sie einfach Ihre Lösung es funktioniert fast direkt vorwärts mit Jenkins. Danke! –

+0

Cool :). Froh, dass ich Helfen kann. –

+2

Sie haben eine ähnliche Lösung gefunden: https://github.com/jsankey/android-junit-report –

1

Ich glaube nicht, dass es möglich ist, also müssen Sie ein Dienstprogramm erstellen, das die Android-Test-Runner-Ausgabe in JUnit-Format-XML-Dateien konvertiert.

Sie können jedoch nicht die Zeit pro Testwert abrufen, da der Android-Test-Runner diese Informationen nicht auszugeben scheint.

+0

Danke für Ihre Antwort. Ich habe einen Absatz als Antwort hinzugefügt. – papalagi

+0

Interessant; Ich habe die Android-Test-Runner-Ausgabe gesehen und den Quellcode vorher angesehen, aber nichts über die Ausgabe von Zeiten gesehen. Ich frage mich, wie es in Eclipse funktioniert. Ich denke, ein Blick auf das ADT-Plugin ist in Ordnung ... –

+0

Ich schaute in die Quelle des Läufers und fand auch nichts. Aber ich habe festgestellt, dass es zwei Test-Runner-Ausgabe-Parser gibt, die in Java und Python im Pfad "/ development/testrunner" bzw. "/ development/tools/ddms" geschrieben sind. Sie helfen viel, die ausführliche Ausgabe des Testläufers zu analysieren. Überraschenderweise verwenden beide "Leistung" als Schlüssel zum Abrufen von Zeitinformationen. Darüber hinaus enthalten Testfälle für den Ausgabe-Parser im Pfad "/ development/testrunner/tests" Leistungstestdaten. Ich denke also, es sollte eine Möglichkeit geben, die Leistungsausgabe einzuschalten. – papalagi

4

Ich habe gerade gesehen, dass Dan Watling von DroidDudes ein Tool namens Athena verwendet, das ähnlich zu sein scheint, was Sie wollen.

Sie können es dort finden: http://droiddudes.com/

0

Ich denke, die athena Ansatz die damit schmerzhaft ist, wie Sie einfach die athena JAR-Datei auf Ihrem System installieren können und

<property name="junit.dir" value="${basedir}/junit-results"/> 
<property name="athena.jar" value="/home/cruise/athena/athena-1.1.2.jar"/> 

<target name="prepare" description="Setup needed directories"> 
    <mkdir dir="${junit.dir}"/> 
</target> 

<!-- This target will compile/install tested project as well as test project to ensure tests are executed against latest code --> 
<target name="athena" depends="prepare, -install-tested-project, install" description="Run tests and convert result to xml using athena"> 
    <exec executable="java" os="Linux" failonerror="true"> 
    <arg value="-cp"/> 
    <arg value="${athena.jar}"/> 
    <arg value="com.synaptik.athena.Athena"/> 
    <arg value="${basedir}"/> 
    <arg value="${junit.dir}/TEST-result.xml"/> 
    </exec> 
</target> 

von der Kommandozeile folgende ant Ziel hinzuzufügen ist es dann nur eine Frage des Laufes ant athena und Sie haben das Testergebnis in XML. Dies ist auch das Ziel, das Ihr CruiseControl-Skript auslösen sollte.

Verwandte Themen