TestNG超时示例
时间:2020-02-23 14:41:57 来源:igfitidea点击:
我们可以为我们的TestNG测试指定超时。
这可以在测试类中通过设置@Test注解的timeTime属性来完成。
如果测试方法未在指定的超时时间内完成,则会抛出org.testng.internal.thread.ThreadTimeoutException,并将方法标记为失败。
TestNG超时@Test示例
这是一个简单的类,其中为测试方法指定了超时。
package com.theitroad.timeout; import org.testng.annotations.Test; public class TimeoutExample { @Test(timeOut = 300) public void foo() throws InterruptedException { Thread.sleep(200); System.out.println("foo method executed"); } @Test(timeOut = 300) public void bar() throws InterruptedException { Thread.sleep(400); System.out.println("bar method executed"); } }
当我们执行以上类时,我们得到以下输出。
[RemoteTestNG] detected TestNG version 6.14.3 foo method executed PASSED: foo FAILED: bar org.testng.internal.thread.ThreadTimeoutException: Method com.theitroad.timeout.TimeoutExample.bar() didn't finish within the time-out 300
TestNG XML超时示例
我们还可以在套件级别和测试级别中在XML套件中指定超时值。
如果我们在两个地方都指定了超时,那么将在执行测试方法时考虑最小值。
让我们看一个简单的TestNG XML套件示例。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="TestNGXMLTest Test Suite" time-out="500"> <test name="TestNGXMLTest Test 1" verbose="2" time-out="300"> <classes> <class name="com.theitroad.timeout.TimeoutExample" </classes> </test> </suite>
请注意,套件级别超时为500 ms,而测试级别超时为300 ms。
执行后,我们得到以下输出。
foo method executed PASSED: foo FAILED: bar org.testng.internal.thread.ThreadTimeoutException: Method com.theitroad.timeout.TimeoutExample.bar() didn't finish within the time-out 300
将套件级别超时更改为300 ms,将测试级别超时更改为500 ms。
我们仍将获得与上述相同的异常,这意味着正在考虑执行超时的最小值。