2009-08-25 6 views
4

Ich habe Tests geschrieben, die Selen für Funktionstests verwenden. Ich benutze Java. Ich möchte in der Lage sein, Struktur zwischen Tests zu schaffen. Ist es möglich mit jUnit oder TestNG zu arbeiten?Wie man strukturierte automatische Tests mit Selen (Junit oder Testng) erstellt? Was ist deine beste Praxis dafür?

möchte in der Lage sein Teststruktur zu schaffen, die berichten, wie diese produzieren:

Top test FAIL 
- Module1 test PASS 
-- Module1Class1 test PASS 
-- Module1Class2 test PASS 
--- Module1Class3Method1 test PASS 
--- Module1Class3Method2 test PASS 
- Module2 test FAIL 
-- Module2Class1 test FAIL 
--- Module2Class1Method1 test PASS 
--- Module2Class1Method2 test FAIL 
--- Module2Class1Method3 test PASS 
+0

Ich habe Tests, die Funktionstests mit Selen durchführen. Ich habe diese mit Selenium IDE oder manuell erzeugt. Ich habe sie nach Java exportiert. Ich verwende Selenium RC. Ich kann sie als Java-Anwendung oder als jUnit-Tests ausführen, um Berichte daraus zu erhalten. Das Problem ist, dass ich viele Klassen und viele Tests darin habe. Ich möchte diese Modul für Modul nicht nur Ergebnisse (bestanden/nicht bestanden) von Modulebene Test, sondern auch von allen Tests in Klassen unten, Methoden unten ausführen. AFAIK jUnit erlaubt nur eine flache Teststruktur. Also ich frage mich über TestNG. Ist das klarer? –

Antwort

1

ich gerade haben habe die Lösung für diese Frage gefunden, also stelle ich hier Link, damit andere davon profitieren können. beust.com Ich habe das noch nicht versucht.

Update: Nachdem ich versucht, Ergebnisse wie folgt erzeugen:

Module1.Class3.Method1 PASS 
Module1.Class3.Method2 PASS 
Module2.Class1.Method1 PASS 
Module2.Class1.Method2 FAIL 
Module2.Class1.Method3 PASS 

Verfahren scheitern Name ist „Method2“ es befindet sich in der Klasse „Class1“ und es ist Paket „Module2“.

Ich habe alle Standard-Möglichkeiten der TestNG (viele davon) verwendet + Ich habe die TestListenerAdapter mit ITestResult Methoden überschrieben. GetName() und getTestClass() getName()

Es ist nicht wirklich die Struktur I gesucht hat, aber ein wenig Parsing kann mir sagen, wo der Fehler war. Und als ein Plus muss ich keine Methoden mit Klassen- und Paketnamen darin benennen.

+0

+1 sieht gut aus. Danke für diesen Link – bastianneu

1

Sie können nicht, denn dies ist nicht das Format ist, dass Selenium-Tests interpretiert. Selenium unterstützt mehrere verschiedene Sprachsyntaxen, von denen die JS- und HTML-Tabellenzeilen am einfachsten sind. Sie können die Aufzeichnungsfunktion der Selenium IDE von Firefox verwenden, wenn Sie Ihre Tests nicht manuell an eine bestimmte Sprachsyntax anpassen möchten.

+0

Hallo. Danke für die Antwort. Aber ich frage nicht nach Selen-Syntax. Dies ist eine Frage für Junit/Testg Testergebnisse. Vielleicht sollte ich Informationen über Selenium aus der Beschreibung entfernen, um niemanden zu verwirren;) –

+0

Komponententests sind Tests innerhalb von Code, um zu analysieren, ob Code-Bits wie vorgesehen funktionieren. Selenium testet das nicht. Selenium testet, was der Browser post-render sieht, wofür nicht Teile des interaktiven Codes geschrieben sind, sondern vielmehr, wofür eine Anwendung vollständig geschrieben ist. –

1

Ich würde empfehlen, die JUnit oder TestNG XML-Berichte zu betrachten. Sie sollten in der Lage sein, sie mit ein wenig XSLT zu transformieren, um einen neuen HTML-Bericht mit Ihrem gewünschten Format zu erstellen.

0

Ich bin nicht vollständig sicher, ob ich recht here..but bin ich denke, das Ihnen helfen kann: http://www.jamesnetherton.com/blog/2007/07/02/Creating-a-Selenium-test-suite/

Sie Ihre Tests mit ihm in einer sehr einfachen Art und Weise Structered gruppieren können.

+0

Danke für die Idee. Meine Frage ist eher wie ein Kommentar für diesen Blogbeitrag auf Ihrer Seite: Gepostet von Madhavi | Dienstag, 22. Januar 09:01 Uhr "(...) Weißt du irgendeinen Weg, eine Test-Suite in eine andere zu integrieren? Ich muss für jede Funktionalität kleinere Test-Suites erstellen und diese Test-Suites in die Master-Test-Suite aufnehmen." –

+1

von meinem Wissenspunkt ist es nicht möglich, aber auch nicht benötigt. Sie müssen Ihren Code um diese Testklassen herum entwickeln, nicht anders herum. Entschuldigung, ich denke, deine Herangehensweise ist vielleicht zu komplex. Eine Lösung wäre jedoch, spezielle Testsuiten zu entwerfen und in Pakete zu unterteilen. So können Sie Softwarekomponenten über Pakete testen. Hoffe, das hilft ... – bastianneu

+0

Danke :) Die Idee dahinter ist es, nicht nur kleine Tests für jede Funktionalität zu haben, sondern in der Lage, alle diese kleinen gruppiert auf Level1 zu laufen, dann ein paar von denen auf Level2 gruppiert und so weiter. Wenn die Gruppe auf Level2 (wie alle in ihnen) fehlschlägt - dann die Möglichkeit haben, auf Level1 zu graben und dann zu dem einen kleinen Test, der fehlgeschlagen ist. Ist es nicht üblich, Funktionstests zu schreiben? –

1

In TestNG können Sie Suites über die Konfigurationsdatei (testng.xml) definieren, die Ihren Anforderungen entspricht. Sie könnten es strukturieren, um eine Testgruppe für jedes Modul zu haben. Ein Fehler in einer Testgruppe macht den gesamten Test als Fehler. Aber ich denke, Sie könnten das auch in JUnit tun, was mir nicht so vertraut ist.

Was ist schön in TestNG ist, dass Sie Abhängigkeiten definieren können.Dadurch wird eine bestimmte logische Reihenfolge für die Testausführung erzwungen und Tests, die von fehlgeschlagenen Tests abhängig sind, werden übersprungen, anstatt sie auch fehlschlagen zu lassen. Erleichtert die Analyse und Tests enden früher, weil all diese Tests, die möglicherweise zum Scheitern verurteilt sind, beiseite gelassen werden.

Aber wie ich schon sagte, ich denke, dass Sie das auch in JUnit tun können. Es ist mehr eine Frage des Geschmacks. Und wenn Sie sich anders entscheiden, ist es keine große Verpflichtung, von JUnit zu TestNG oder umgekehrt zu konvertieren.