在這篇文章中,我將解釋這些方法的主要差異是什麼。首先我們為什麼要用這個方法。當我們測試我們的方法性能或我們想知道我們的方法需要多長時間才能完成時,此方法將很有用。
首先我們必須給我們的測試方法時間,然後這些測試執行測試中的操作。如果此操作花費的時間比指定的時間長,則此測試將失敗。
現在我們知道這些方法是什麼,為什麼我們在測試方法中使用它們。那我們就必須知道差別了。
讓我簡單解釋一下。 assertTimeout 方法計算我們給出的時間,如果我們的測試方法花費的時間比指定的時間長,則在所有操作完成後,此測試將失敗。但是,如果assertTimeoutPreemptively 方法花費的時間超過指定的時間,則該方法將立即失敗。而且它不會等待所有流程完成,我們將在下一步的專案中對此進行測試。
先打開你最喜歡的IDE。我打開 Intellij Idea 是因為這個 IDE 在 Java 開發人員中非常受歡迎。當然你可以使用你喜歡的IDE,像是Eclipse,Netbeans,你喜歡哪一個。
現在建立一個新的 Maven 專案並將這 2 個依賴項新增到您的 pom.xml 檔案中。
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
在新增這些後開啟 src/test/java 資料夾和
建立新類別並指定您想要的名稱,我將指定 TimeoutTest。
建立2個測試方法,其中一個測試assertTimeout,另一個測試assertTimeoutPreemptively。
之後,我給出持續時間並添加簡單的列印訊息。
我加入了 Thread.sleep() 方法,線程睡眠 8000 毫秒(8 秒)。但這兩種方法都會失敗,因為這些方法需要的時間超過 3 秒。讓我測試一下這些方法以便更好地理解。
你看到 testAssertTimeout 方法需要 8s 3ms 因為這個方法等待完成所有操作,但另一個需要 3s 45ms,並且它不等待完成其他過程,它立即失敗。
可以看到訊息testAssertTimeout方法列印了訊息,但是assertTimeoutPreemptively方法沒有列印訊息,它忽略了其他操作。
在這篇文章中我們討論了assertTimeout和assertTimeoutPreemptively之間的主要差異。
終於,程式碼在Github上可用了。
照顧好自己,一會兒見。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3