首頁  >  文章  >  Java  >  assertTimeout 和assertTimeoutPreemptively 之間的主要差異是什麼?

assertTimeout 和assertTimeoutPreemptively 之間的主要差異是什麼?

WBOY
WBOY原創
2024-07-16 11:42:42736瀏覽

在這篇文章中,我將解釋這些方法之間的主要差異是什麼。首先我們為什麼要用這個方法。當我們測試我們的方法性能或我們想知道我們的方法需要多長時間才能完成時,此方法將很有用。

這些方法如何運作?

首先我們必須給我們的測試方法時間,然後這些測試執行測試中的操作。如果此操作花費的時間比指定的時間長,則此測試將失敗。

assertTimeout 和assertTimeoutPreemptively 之間的差異

現在我們知道這些方法是什麼,為什麼我們在測試方法中使用它們。那我們一定要知道其中的差別。

讓我簡單解釋一下。 assertTimeout 方法計算我們給出的時間,如果我們的測試方法花費的時間比指定的時間長,則在所有操作完成後,此測試將失敗。但是,如果assertTimeoutPreemptively 方法花費的時間超過指定的時間,則該方法將立即失敗。而且它不會等待所有流程完成,我們將在下一步的專案中對此進行測試。

測試

先打開你最喜歡的IDE。我打開 Intellij Idea 是因為這個 IDE 在 Java 開發人員中非常受歡迎。當然你可以使用你喜歡的IDE,像是Eclipse,Netbeans,你喜歡哪一個。

現在建立一個新的 Maven 專案並將這 2 個依賴項新增到您的 pom.xml 檔案中。

<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>

新增這些後,開啟 src/test/java 資料夾並

建立新類別並給你想要的名稱,我會給 TimeoutTest。

建立2個測試方法,其中一個測試assertTimeout,另一個測試assertTimeoutPreemptively。

assertTimeout and assertTimeoutPreemptively

之後,我給出持續時間並添加簡單的列印訊息。

Informational messages

我新增了 Thread.sleep() 方法,線程睡眠 8000 毫秒(8 秒)。但這兩種方法都會失敗,因為這些方法需要的時間超過 3 秒。讓我測試一下這些方法以便更好地理解。

result of methods

你會看到testAssertTimeout 方法需要8s 3ms 因為這個方法等待完成所有操作,但另一個需要3s 45ms,而且它不會等待完成其他過程,它立即等待完成其他過程,它立即失敗。

可以看到訊息testAssertTimeout方法列印了訊息,但是assertTimeoutPreemptively方法沒有列印訊息,它忽略了其他操作。

結論

在這篇文章中我們討論了assertTimeout 和assertTimeoutPreemptively 之間的主要差異。

終於可以在Github上取得程式碼了。

照顧好自己,很快再見。

以上是assertTimeout 和assertTimeoutPreemptively 之間的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn