Ich möchte Testfälle für einen Großteil des Codes schreiben. Ich möchte Details zur JUnit- @Rule
Anmerkungsfunktion kennen, damit ich sie zum Schreiben von Testfällen verwenden kann. Bitte geben Sie einige gute Antworten oder Links an, die anhand eines einfachen Beispiels eine detaillierte Beschreibung der Funktionalität enthalten.
java
junit
junit4
junit-rule
Dipak
quelle
quelle
@Rule
s ziemlich gut erklärt , insbesondere den letzten Abschnitt "Die Abfolge der Ereignisse im Detail"Antworten:
Regeln werden verwendet, um zusätzliche Funktionen hinzuzufügen, die für alle Tests innerhalb einer Testklasse gelten, jedoch allgemeiner.
Beispielsweise führt ExternalResource Code vor und nach einer Testmethode aus, ohne
@Before
und verwenden zu müssen@After
. Die Verwendung einesExternalResource
anstatt@Before
und@After
bietet Möglichkeiten für eine bessere Wiederverwendung von Code. Die gleiche Regel kann aus zwei verschiedenen Testklassen verwendet werden.Das Design basierte auf: Interceptors in JUnit
Weitere Informationen finden Sie im JUnit-Wiki: Regeln .
quelle
Junit Rules arbeiten nach dem Prinzip der AOP (aspektorientierte Programmierung). Es fängt die Testmethode ab und bietet so die Möglichkeit, einige Dinge vor oder nach der Ausführung einer bestimmten Testmethode zu erledigen.
Nehmen Sie das Beispiel des folgenden Codes:
Jedes Mal, wenn die obige Testmethode ausgeführt wird, wird ein temporärer Ordner erstellt, der nach der Ausführung der Methode gelöscht wird. Dies ist ein Beispiel für eine von Junit bereitgestellte Out-of-Box-Regel.
Ein ähnliches Verhalten kann auch durch die Erstellung eigener Regeln erreicht werden. Junit bietet die TestRule-Schnittstelle, die implementiert werden kann, um unsere eigene Junit-Regel zu erstellen.
Hier ist ein nützlicher Link als Referenz:
quelle
tl; dr für die Funktionsweise: JUnit verpackt Ihre Testmethode in ein Anweisungsobjekt, sodass Anweisung.Execute () Ihren Test ausführt. Anstatt Anweisung.Execute () direkt aufzurufen, um Ihren Test auszuführen, übergibt JUnit die Anweisung an eine TestRule mit der Annotation @Rule. Die "Apply" -Funktion der TestRule gibt eine neue Anweisung zurück, die die Anweisung mit Ihrem Test enthält. Die Execute () -Methode der neuen Anweisung kann die Ausführungsmethode der Testanweisung aufrufen (oder nicht oder mehrmals aufrufen) und vorher und nachher tun, was sie will. Jetzt hat JUnit eine neue Anweisung, die mehr als nur den Test ausführt und diese erneut an weitere Regeln übergeben kann, bevor schließlich Execute aufgerufen wird.
quelle
Regeln werden verwendet, um das Verhalten jeder Testmethode generisch zu verbessern. Die Junit-Regel fängt die Testmethode ab und ermöglicht es uns, etwas zu tun, bevor eine Testmethode mit der Ausführung beginnt und nachdem eine Testmethode ausgeführt wurde.
Mit der @ Timeout-Regel können wir beispielsweise das Zeitlimit für alle Tests festlegen.
Die @ TemporaryFolder- Regel wird verwendet, um temporäre Ordner und Dateien zu erstellen. Jedes Mal, wenn die Testmethode ausgeführt wird, wird ein temporärer Ordner erstellt, der nach der Ausführung der Methode gelöscht wird.
Beispiele für einige von junit bereitgestellte integrierte Regeln finden Sie unter diesem Link .
quelle