Erstellen Sie mehrere Parametersätze in einer parametrisierten Klasse (Junit)
Derzeit habe ich zum erstellen eines parametrisierten test-Klasse für jede Methode, die ich testen möchte mit mehreren Eingängen. Gibt es eine Möglichkeit, fügen Sie diese zusammen in einer Datei?
Sofort gibt es CalculatorTestAdd.java
die einen Satz von Parametern, die verwendet werden, um zu überprüfen, ob die Add()
- Funktion funktioniert. Gibt es eine Möglichkeit, für mich zu 'schließen' mit diesem Satz in die Add()
- Funktion, und erstellen Sie einen zusätzlichen Satz bedeutete für die Subtract()
- Methode, und fügen Sie diese Methode in die gleiche test-Klasse, was in einer Datei namens CalculatorTest.java
?
InformationsquelleAutor der Frage Jeroen Vannevel | 2012-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja. Es gibt nichts spezielles, das Sie zu tun haben. Für jeden Satz von Wert(en) der Parameter, jeder @Test-Methode einmal ausgeführt wird, so haben gerade eine Methode test, add() und eine andere Methode testen, subtrahieren().
Kann ich auch hinzufügen, dass die person, die diktiert diese Anforderung ist falsch. Es gibt wenig Wert in das vorschreiben bestimmter design patterns "für alle Fälle" - könnte genauso gut mieten trainierten Affen.
InformationsquelleAutor der Antwort Bohemian
Diese Antwort ist ähnlich wie Tarek ist einer (parametrisierten Teil), obwohl ich denke, es ist ein bisschen mehr erweiterbar. Auch Ihr problem löst und Sie nicht versäumt haben, testet, ob alles korrekt ist:
InformationsquelleAutor der Antwort nessa.gp
Ich bin mir sicher, dass Sie nicht mit diesem problem nicht mehr, aber ich dachte der 3 Möglichkeiten, wie Sie dies tun können, jeder mit seinen vor-und Nachteile. Mit der Parametrisierten Läufer, müssen Sie einen workaround.
- Mit mehr Parametern mit Parametrisierten
In Fall müssen Sie zum laden der Parameter extern, fügen Sie einfach einen parameter für die erwarteten Ergebnisse.
Profis: weniger codieren und es läuft alles tests.
Nachteile: neue Parameter für jeden anderen Satz von tests.
- Nicht mit Parametrisierten Läufer
Dies funktioniert gut, wenn Sie den Parameter programmgesteuert.
Profis: Sie können so viele tests wie Sie wollen, ohne eine riesige Menge von Parametern.
Nachteile: Weitere Codierung, und es Stoppt bei dem ersten Fehler (die möglicherweise nicht zu einer con).
- Mit JUnitParams
Ich habe keine Verbindung mit der Pragmatiker, ich habe gerade vor ein paar Tagen. Dieses framework läuft auf Basis von JUnit und Griffe parametrisierte tests anders. Die Parameter direkt übergeben werden, um die test-Methode, so können Sie in der gleichen Klasse unterschiedliche Parameter für verschiedene Methoden.
Profis: erzielt die gleichen Ergebnisse wie die oben genannten Lösungen ohne workarounds.
Nachteile: vielleicht ist Ihr Unternehmen nicht erlauben, fügen Sie eine neue Abhängigkeit zu der Projekt-oder zwingt Sie dazu verwenden, einige bizarre-coding-Regel (wie die Verwendung der Parametrisierten Läufer ausschließlich). Let ' s face it, es passiert mehr als wir möchten.
Hier's ein schönes Beispiel für JUnitParams in Aktion, und Sie können das Projekt/den code auf dieser Github Seite.
InformationsquelleAutor der Antwort Tarek
können Sie Parameter verwenden, mit https://github.com/piotrturski/zohhak:
wenn Sie möchten, um Parameter von Datei, die Sie verwenden können, http://code.google.com/p/fuzztester/ oder http://code.google.com/p/junitparams/
und wenn Sie brauchen echte Flexibilität, die Sie verwenden können, junit @Parametrisierte aber es unübersichtlich dein code.
Sie können auch junit Theorien - aber es scheint ein overkill für den Rechner tests
InformationsquelleAutor der Antwort piotrek
Anderen reinen JUnit, aber dennoch elegante Lösung aus meiner Sicht zu Kapseln, jeder parametrisierten test(s) in Ihre eigene innere statische Klasse, und verwenden Sie die Beiliegend test runner auf die top-level-test-Klasse. Dies ermöglicht Ihnen nicht nur, um verschiedene parameter-Werte für jeden test, die unabhängig voneinander aber auch zum testen von Methoden mit ganz unterschiedlichen Parametern.
Dies ist, wie es Aussehen würde:
Hinweis: die Nutzung der
@Parameter
Anmerkung in derSubstractTest
die halte ich für besser lesbar. Aber das ist mehr eine Frage des Geschmacks.InformationsquelleAutor der Antwort Alex
Gut, jetzt JUnit-5 bietet Ihnen eine Lösung für dieses - durch die Neudefinition einer Weise zu schreiben, parametrisierte tests.
Jetzt eine parametrisierte Tests können definiert werden eine Methode Ebene mit @ParameterizedTest und kann eine Methode Quelle mit @MethodSource.
So, in Ihrem Fall können Sie 2 separate Datenquelle Methoden zur Bereitstellung der Eingabedaten für Ihre add() und subtrahieren () - test-Methoden, die beide in der gleichen Klasse. Ihr code sollte wie folgt Aussehen:
}
InformationsquelleAutor der Antwort Ankit Singodia