Dalam catatan blog ini, saya akan menerangkan apakah perbezaan utama antara kaedah ini. Pertama sekali mengapa kita menggunakan kaedah ini. Kaedah ini berguna apabila kami menguji prestasi kaedah kami atau kami ingin tahu berapa lama masa yang diambil oleh kaedah kami untuk diselesaikan.
Mula-mula kita perlu memberi masa kaedah ujian kita, selepas itu ujian ini melaksanakan operasi dalam ujian. Jika operasi ini mengambil masa yang lebih lama daripada yang ditentukan dan kemudian ujian ini akan gagal.
Baiklah sekarang kami tahu apakah kaedah ini, mengapa kami menggunakannya dalam kaedah ujian kami. Kemudian kita mesti tahu perbezaannya.
Biar saya terangkan secara ringkas. kaedah assertTimeout mengira masa yang kami berikan, jika kaedah ujian kami mengambil masa lebih lama daripada yang ditentukan, ujian ini akan gagal selepas semua operasi selesai. Walau bagaimanapun, jika kaedah assertTimeoutPreemptively mengambil masa lebih lama daripada yang ditentukan, kaedah ini akan gagal serta-merta. Dan ia tidak akan menunggu untuk semua proses selesai, kami akan menguji ini dalam projek dalam langkah seterusnya.
Mula-mula buka IDE kegemaran anda. Saya membuka Intellij Idea kerana IDE ini sangat popular di kalangan pembangun Java. Sudah tentu anda boleh menggunakan IDE kegemaran seperti Eclipse, Netbeans yang mana satu yang anda suka.
Sekarang buat projek Maven baharu dan tambahkan 2 kebergantungan ini pada fail pom.xml anda.
<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>
Selepas menambah ini buka folder src/test/java dan
Buat kelas baharu dan berikan nama apa sahaja yang anda mahu, saya akan berikan TimeoutTest.
Buat 2 kaedah ujian, satu daripadanya menguji assertTimeout dan satu lagi menguji assertTimeoutPreemptively.
Selepas itu saya memberikan tempoh dan menambah mesej cetakan mudah.
Saya menambah kaedah Thread.sleep() dan Thread tidur 8000 ms ( 8 saat). Tetapi 2 kaedah ini akan gagal kerana kaedah ini mengambil masa lebih lama daripada 3 saat. Biar saya menguji kaedah ini untuk memahami dengan lebih baik.
Dan anda melihat kaedah testAssertTimeout mengambil masa 8s 3ms kerana kaedah ini menunggu untuk menyelesaikan semua operasi, tetapi yang satu lagi mengambil masa 3s 45ms, dan ia tidak menunggu untuk menyelesaikan proses lain , ia gagal serta-merta.
Anda boleh melihat kaedah testAssertTimeout mesej mencetak mesej tetapi kaedah assertTimeoutPreemptively tidak mencetak mesej, ia mengabaikan operasi lain.
Dalam siaran ini kita bercakap tentang perbezaan utama antara assertTimeout dan assertTimeoutPreemptively.
Akhirnya, kod tersedia di Github.
Jaga diri anda, jumpa lagi.
Atas ialah kandungan terperinci Apakah perbezaan utama antara assertTimeout dan assertTimeoutPreemptively?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!