When a test method is taking longer time than the specified time (in milliseconds) to execute, then that test method will be terminated and marked as failed, this feature is available in both JUnit 4 and TestNG.
While running test methods there can be cases where certain test methods get struck or may take longer time than to complete the execution than the expected. We need to handle these type of cases by specifying Timeout and proceed to execute further test cases / methods
TestNG Example:
import org.testng.annotations.Test;
public class TestNGExamples {
@Test
public void sampleTestCase(){
System.out.println("Im ready to execute");
}
@Test(timeOut=1000) // specify time in milliseconds
public void executetimeOut() throws InterruptedException{
Thread.sleep(3000);
// Thread.sleep(500);
}
}
When we execute the above program, it will display the output as “2 tests executed.
Test Method : sampleTestCase – PASSED
Test Method : executetimeOut – FAILED
Error – org.testng.internal.thread.ThreadTimeoutException: Method org.testng.internal.TestNGMethod.executePass() didn't finish within the time-out 1000
The second method will be marked as Fail, because the execution is not completed in the specified timeOut period. Hence it will stop the execution forcibly and returns as FAILED
The Method will return as “PASSED”, if we change the value of milliseconds to lessthan 1000 which specified in timeout. As “Thread.sleep(500);”. The test will complete the executing within the timeout period, hence this will return as “Passed”
Add new comment