13 Stimmen

Nachteile von TestNG im Vergleich zu jUnit?

Ich bin mit jUnit vertraut und habe gehört, dass TestNG eine Lösung für einige der Ärgernisse von jUnit sein könnte - z.B. sein Beharren darauf, für jeden Test eine eigene Instanz der Testklasse zu erstellen, was mich dazu zwingt, statische Felder für Objekte zu verwenden, die ich zwischen Tests wiederverwenden möchte.

(Nehmen wir an, Sie stimmen mit mir überein, dass dies ein Nachteil ist, und drehen diese Frage nicht in etwas um, was sie nicht ist)

Was ich hier frage, ist, welche Nachteile hat TestNG, im Vergleich zu jUnit? Warum nicht TestNG verwenden, vorausgesetzt, dies ist ein neues Projekt und es gibt keine Migrationskosten?

7voto

Cedric Beust Punkte 15154

Ich bin der Schöpfer von TestNG. Ich werde mich nicht einmischen, da ich offensichtlich voreingenommen bin, aber ich beantworte gerne jede Frage, die Sie zu TestNG haben.

Andy: Danke für deinen Kommentar. Zu Ihrer Information (Sie wissen das wahrscheinlich schon, aber vielleicht weiß es der ursprüngliche Poster nicht), es gibt ein TestNG Eclipse Plug-in (die ich parallel zu TestNG entwickle).

5voto

Andy Thomas Punkte 81932

Ich persönlich habe keine nennenswerten Nachteile im Vergleich zu JUnit feststellen können.

Zu Beginn eines neuen Projekts wechselte mein Team zu TestNG und hat es nicht bereut. TestNG ist leistungsfähiger und unterstützt eine breitere Nutzung als Unit-Tests.

Einige Tools unterstützen JUnit, aber nicht TestNG. Das sind Werkzeuge, die ich noch nicht gebraucht habe. Zum Beispiel:

  • CodePro Analytix von Google unterstützt Erstellung von JUnit-Unit-Tests .
  • Die Eclipse IDE für die RCP-Entwicklung unterstützt Run/Debug-Konfigurationen für "JUnit-Plug-in-Tests".

3voto

Tomek Kaczanowski Punkte 383

Als großer Unterstützer von TestNG sehe ich immer noch, dass es von den Tool-Autoren als Nummer 2 behandelt wird. Viele Tools und Bibliotheken unterstützen JUnit von Anfang an, aber man muss warten, bis sie auch Unterstützung für TestNG implementieren. Dies könnte ein ernsthafter Nachteil sein, wenn Sie planen, eine der neuesten Technologien zu verwenden.

Im Laufe der Jahre hat sich die Situation stark verbessert. Zum Beispiel war dies früher ein Problem mit Spring, Gradle oder Maven Surefire, aber jetzt ist es kein Problem mehr, da sie alle TestNG unterstützen. Auch alle IDEs behandeln beide Frameworks gleich.

Vergewissern Sie sich also, dass die anderen Technologien, die Sie verwenden wollen, gut mit TestNG zusammenspielen. Dies ist selten ein Problem, aber es ist trotzdem besser, sich im Voraus zu vergewissern.

1voto

Yurii Bondarenko Punkte 3230

Für mich ist das größte Problem eine Integration mit Frühling. Ich mag es nicht, TestNg-Klassen zu erweitern und Code wie diesen zu schreiben:

@Test
@ContextConfiguration(locations = { "classpath:spring-test-config.xml" })
public class TestSpring extends AbstractTestNGSpringContextTests {

Denn normalerweise habe ich meine eigene Hierarchie von Testklassen. Das war der Hauptgrund, warum ich mit TestNg aufgehört habe.

Ich muss zustimmen, dass der parametrisierte Test für mich sehr attraktiv war. Aber sie können leicht mit junit data-provider ersetzt werden.

https://github.com/TNG/junit-dataprovider/wiki/Getting-started

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X