„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Was ist der Hauptunterschied zwischen „asserTimeout“ und „asserTimeoutPreemptively“?

Was ist der Hauptunterschied zwischen „asserTimeout“ und „asserTimeoutPreemptively“?

Veröffentlicht am 30.07.2024
Durchsuche:580

In diesem Blogbeitrag werde ich erklären, was der Hauptunterschied zwischen diesen Methoden ist. Zunächst einmal: Warum verwenden wir diese Methoden? Diese Methode ist nützlich, wenn wir die Leistung unserer Methode testen oder wissen möchten, wie lange die Fertigstellung unserer Methode dauert.

Wie funktionieren diese Methoden?

Zuerst müssen wir unserer Testmethode Zeit geben, danach führen diese Tests Operationen im Test aus. Wenn dieser Vorgang länger dauert als angegeben, schlägt dieser Test fehl.

Unterschied zwischen „asserTimeout“ und „asserTimeoutPreemptively“.

Okay, jetzt wissen wir, was diese Methoden sind und warum wir sie in unseren Testmethoden verwenden. Dann müssen wir den Unterschied kennen.

Lassen Sie es mich kurz erklären. Die Methode „asserTimeout“ zählt die von uns angegebene Zeit. Wenn unsere Testmethode länger als angegeben dauert, schlägt dieser Test fehl, nachdem alle Vorgänge abgeschlossen sind. Wenn die Methode „asserTimeoutPreemptively“ jedoch länger als angegeben dauert, schlägt diese Methode sofort fehl. Und es wird nicht darauf gewartet, dass alle Prozesse abgeschlossen sind, sondern wir werden dies im nächsten Schritt im Projekt testen.

Prüfen

Öffnen Sie zunächst Ihre Lieblings-IDE. Ich öffne Intellij Idea, weil diese IDE bei Java-Entwicklern sehr beliebt ist. Natürlich können Sie Ihre Lieblings-IDE wie Eclipse oder Netbeans verwenden, je nachdem, welche Sie bevorzugen.

Erstellen Sie nun ein neues Maven-Projekt und fügen Sie diese beiden Abhängigkeiten zu Ihrer pom.xml-Datei hinzu.

org.junit.jupiterjunit-jupiter-api5.3.1testorg.junit.jupiterjunit-jupiter-engine5.3.1test

Nachdem Sie diese hinzugefügt haben, öffnen Sie den Ordner src/test/java und

Erstellen Sie eine neue Klasse und geben Sie dem Namen einen beliebigen Namen. Ich gebe TimeoutTest.

Erstellen Sie zwei Testmethoden, eine davon testet „asserTimeout“ und die andere testet „asserTimeoutPreemptively“.

assertTimeout and assertTimeoutPreemptively

Danach gebe ich die Dauer ein und füge eine einfache Drucknachricht hinzu.

Informational messages

Ich füge die Thread.sleep()-Methode hinzu und Thread schläft 8000 ms (8 Sekunden). Diese beiden Methoden schlagen jedoch fehl, da sie länger als 3 Sekunden dauern. Lassen Sie mich diese Methoden testen, um sie besser zu verstehen.

result of methods

Und Sie sehen, dass die testAssertTimeout-Methode 8s 3ms benötigt, weil diese Methode auf den Abschluss aller Vorgänge wartet, die andere jedoch 3s 45ms benötigt und nicht darauf wartet, den anderen Prozess abzuschließen , es schlägt sofort fehl.

Sie können sehen, dass die Nachricht testAssertTimeout-Methode die Nachricht druckt, aber die AssertTimeoutPreemptively-Methode druckt die Nachricht nicht, sie ignoriert andere Vorgänge.

Abschluss

In diesem Beitrag haben wir über den Hauptunterschied zwischen „asserTimeout“ und „asserTimeoutPreemptively“ gesprochen.

Endlich ist der Code auf Github verfügbar.

Pass auf dich auf, bis bald.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/mammadyahyayev/what-is-the-main-difference-between-asserttimeout-and-asserttimeoutpreemptively-8l?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3