Автор оригинала: mkyong.
В JUnit 5 мы можем использовать @Timeout
для провала теста, если время выполнения превышает заданную продолжительность.
P.S Протестировано с JUnit 5.5.2
1. @Тайм-аут
package com.mkyong.timeout; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; import java.util.concurrent.TimeUnit; public class TimeOutExample1 { // timed out after 5 seconds @BeforeEach @Timeout(5) void setUpDB() throws InterruptedException { //TimeUnit.SECONDS.sleep(10); } // timed out after 500 miliseconds @Test @Timeout(value = 500, unit = TimeUnit.MILLISECONDS) void test_this() { } }
2. время ожидания подтверждения
2.1 Мы также можем использовать Тайм-аут утверждения
для тайм-аута теста.
package com.mkyong.timeout; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; import java.time.Duration; import java.util.concurrent.TimeUnit; import static org.junit.jupiter.api.Assertions.assertTimeout; public class TimeOutExample2 { // timed out after 5 seconds @Test void test_timeout_fail() { // assertTimeout(Duration.ofSeconds(5), () -> delaySecond(10)); // this will fail assertTimeout(Duration.ofSeconds(5), () -> delaySecond(1)); // pass } void delaySecond(int second) { try { TimeUnit.SECONDS.sleep(second); } catch (InterruptedException e) { e.printStackTrace(); } } }
Скачать Исходный Код
Оригинал: “https://mkyong.com/junit5/junit-5-timeouts-examples/”