JUnit4测试超时详解

IT 文章2年前 (2023)发布 小编
0 0 0

学习编写JUnit测试用例,并具有超时行为。如果测试未在给定的时间限制内完成执行,则将强制停止其执行,并将测试标记为失败。

1.为什么测试需要设置超时?

我们可能需要测试应用程序在外部系统在给定时间内没有响应时的故障安全行为。

因此,当我们模拟外部依赖项时,最好使用与超时相关的测试。

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

这也被认为是JUnit的最佳实践。

如何调用超时?

我们知道每个测试都在一个新线程中运行。如果在测试完成之前指定的超时时间已过,则通过Thread.interrupt()中断其执行。

2. JUnit测试超时示例

要为某个测试用例指定超时时间,请在@Test注释上提及“timeout”属性。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

请注意,超时时间以毫秒为单位。

@Test(timeout = 500)
public void testTimeoutOne() throws InterruptedException 
{
	TimeUnit.SECONDS.sleep(1);
}

在上面的测试中,执行将在500ms后超时,并显示以下消息。

java.lang.Exception: test timed out after 500 milliseconds

3.全局超时的规则

除了为所有测试分别指定超时属性外,我们还可以为类中的所有测试定义JUnit规则。

public class TimeoutTests {
	@Rule
	public Timeout globalTimeout = Timeout.seconds(2);

	@Test 	
	public void testTimeoutOne() throws InterruptedException          //PASS
	{
		TimeUnit.SECONDS.sleep(1);
	}

	@Test 	
	public void testTimeoutTwo() throws InterruptedException		//FAIL
	{
		TimeUnit.SECONDS.sleep(3);
	}
}

在上面的示例中,第一个测试将通过,而第二个测试将失败。

© 版权声明

相关文章

暂无评论

暂无评论...