Dies ist eine Interviewfrage, die mein Wicket nahm. Wir haben eine Selen-Test-Klasse mit 5,6 Selen-Tests. Test 3 wird ausgeführt, und ein Netzwerkfehler ist aufgetreten. Sobald das Netzwerk wieder aufgebaut ist, wird das Framework so konfiguriert, dass es an der Stelle beginnt, an der es fehlgeschlagen ist, wie beim 3. Test. Und sollte den bereits ausgeführten Test 1 & ausführen 2. Angenommen Framework ist junit.Testausführung nach Netzwerkausfall fortsetzen
Antwort
Ich kann Javaguy auf seine Antwort nicht zustimmen. Ich denke, dass die Frage vollkommen gültig ist. Es gibt einen großen Unterschied zwischen Komponententests als Konzept und JUnit als Werkzeug.
Was in Javaguys Antwort beschrieben wurde, ist Komponententests. Diese können wirklich nichts anderes als die Klasse in den Speicher laden und schreiben. Aber sicherlich Tests, die Selenium-Web-Treiber verwenden, sind keine Unit-Tests. Und es ist gültig, eine JUnit als Rahmen für die Implementierung dieser Tests zu wählen. Natürlich können wir darüber streiten, ob die JUnit das beste Werkzeug dafür ist, aber es ist eine andere Geschichte, unter dem Strich, wenn JUnit als ein Implementierungswerkzeug für diese Tests gewählt wurde, ist dies eine gültige Wahl.
Nun zu Ihrer Frage. Es gibt viele verschiedene Möglichkeiten, um zu erreichen, was Sie wollen.
Erstellen Sie eine JUnit-Regel, mit der der Test erneut ausgeführt werden kann. Im Allgemeinen sind Regeln ähnlich wie Interzeptoren oder Aspekte, wenn Sie mit der AOP-Terminologie vertraut sind. Sie fangen den Test ab, so dass er fehlschlägt, sie können ihn erneut ausführen. Here Sie können eine Frage finden, die die Regeln erklärt und einige Links zur Verfügung stellt.
Implementieren Sie einen benutzerdefinierten Runner. Dieser Ansatz funktioniert nur, wenn Sie keine anderen Läufer verwenden, da JUnit nur einen Platz für Läufer bereitstellt. Dieser benutzerdefinierte Runner wird die Testanrufe erneut abfangen und bei Netzwerkausfall erneut starten/das Netzwerk anpingen und warten und nur dann, wenn es zurückkommt, erneut ausgeführt werden. Dann können Sie
@RunWith
Annotation verwenden, um Ihren tatsächlichen Runner auf Test zu aktivieren.Anwendbare Lösung. Angenommen, Selen-Web-Treiber ist die einzige Sache, die in Ihrem Test tatsächlich abhängig von Netzwerk ist, wickeln Selen-Treiber Anrufe in Ihre Anrufe. Stellen Sie
try/catch
für alle Anrufe in Selen bereit, und wenn Sie die Ausnahme abfangen, versuchen Sie es erneut. Sie können sogar Aspekte dafür verwenden oder den Wrapper manuell implementieren.Es gibt auch einige Lösungen auf der Ebene von Jenkins/Ihr Build-Tool, aber ich denke, diese tatsächlich ...
out of scope sind
this helps
- 1. c3p0 erneut verbinden nach Netzwerkausfall
- 2. RabbitMQ Verbindung Autorecovering nach Netzwerkausfall
- 3. Python Bot Wie wiederhole ich nach Netzwerkausfall
- 4. Loop nach Exception fortsetzen?
- 5. Code nach Exception fortsetzen
- 6. Jenkins Build Script beendet nach Google Testausführung
- 7. Fehlende bestimmte GCDA-Dateien nach Testausführung
- 8. Fortsetzen von Uploads mit Samba
- 9. CSS Animation nach Mausklick fortsetzen
- 10. Wie Testausführung mit Testlink
- 11. Fehler bei Karma Testausführung
- 12. Protokollerstellung in paralleler Testausführung
- 13. Selen GRID Testausführung
- 14. WinHTTP-Verbindung nach dem Schreibabbruch fortsetzen
- 15. AVAudioPlayer nach Anruf fortsetzen funktioniert nicht
- 16. Selenium JavaScript zu Schleife nach Ausnahme fortsetzen
- 17. Debugging in GHC nach dem Interrupt fortsetzen
- 18. Videowiedergabe nach Pause in JavaScript/HTML5 fortsetzen?
- 19. Wie Grails Testausführung zu beschleunigen
- 20. Selenium Builder Testausführung durch SeInterpreter.jar
- 21. xUnit: stop Testausführung von Code
- 22. Testausführung von setTimeout in componentDidMount?
- 23. Fortsetzen git-svn Klon
- 24. Timer über Ansichtssteuerungen fortsetzen
- 25. Wie man eine Warteschlange behandelt, um Anfragen nach Netzwerkausfall mit Nachrüstung zu wiederholen
- 26. Salesforce-Streaming-API: Abrufen von Ereignissen nach Netzwerkausfall und vor dem erneuten Abonnement
- 27. Anhalten/Fortsetzen CountDownTimer Android
- 28. Kerning an Taggrenzen fortsetzen
- 29. Wie Audio nach der Unterbrechung in Swift fortsetzen?
- 30. Persistieren Abfrage in SearchView nach dem Fortsetzen der Aktivität