Heim  >  Artikel  >  Java  >  Was ist der Hauptunterschied zwischen „asserTimeout' und „asserTimeoutPreemptively'?

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

WBOY
WBOYOriginal
2024-07-16 11:42:42737Durchsuche

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.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.3.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.3.1</version>
    <scope>test</scope>
</dependency>

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 an 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 es 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 testAssertTimeout-Methode der Nachricht die Nachricht druckt, aber die AssertTimeoutPreemptively-Methode druckt die Nachricht nicht, sondern 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.

Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen „asserTimeout' und „asserTimeoutPreemptively'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn