JUnit 5 Timeouts Examples
In JUnit 5, we can use @Timeout
to fail a test if the execution time exceeds a given duration.
P.S Tested with JUnit 5.5.2
1. @Timeout
TimeOutExample1.java
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. assertTimeout
2.1 We also can use assertTimeout
to time out a test.
TimeOutExample2.java
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();
}
}
}
Download Source Code
$ git clone https://github.com/mkyong/junit-examples
$ cd junit5-examples
$ check src/test/java/com/mkyong/timeout/*.java
$ cd junit5-examples
$ check src/test/java/com/mkyong/timeout/*.java
References
About Author
Comments
Subscribe
0 Comments