blob: 7b373e6cb0c4125a91a381c2df708a19347eb582 [file] [log] [blame]
package test.timeout;
import org.testng.annotations.Test;
import org.testng.xml.SuiteXmlParser;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlInclude;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
import test.BaseTest;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TimeOutFromXmlTest extends BaseTest {
private void timeOutTest(boolean onSuite) {
addClass(TestTimeOutSampleTest.class);
if (onSuite) {
setSuiteTimeOut(1_000);
} else {
setTestTimeOut(1_000);
}
run();
verifyPassedTests();
verifyFailedTests("timeoutTest");
}
@Test
public void timeOutOnSuiteTag() {
timeOutTest(true /* on suite */);
}
@Test
public void timeOutOnTestTag() {
timeOutTest(false /* on test */);
}
@Test
public void noTimeOut() {
addClass(TestTimeOutSampleTest.class);
run();
verifyPassedTests("timeoutTest");
verifyFailedTests();
}
@Test
public void twoDifferentTests() {
XmlSuite result = new XmlSuite();
result.setName("Suite");
createXmlTest(result, "WithoutTimeOut");
createXmlTest(result, "WithTimeOut").setTimeOut(1_000);
setSuite(result);
run();
verifyPassedTests("timeoutTest");
verifyFailedTests("timeoutTest");
}
private XmlTest createXmlTest(XmlSuite suite, String name) {
XmlTest result = new XmlTest(suite);
result.setName(name);
List<XmlClass> classes = new ArrayList<>();
XmlClass cls = new XmlClass(TestTimeOutSampleTest.class);
cls.setIncludedMethods(
Collections.singletonList(new XmlInclude("timeoutTest")));
classes.add(cls);
result.setXmlClasses(classes);
return result;
}
@Test
public void timeOutInParallelTestsFromXml() throws IOException {
String file = "src/test/java/test/timeout/issue575.xml";
try (FileInputStream stream = new FileInputStream(file)) {
SuiteXmlParser suiteParser = new SuiteXmlParser();
XmlSuite suite = suiteParser.parse(file, stream, true);
setSuite(suite);
run();
verifyPassedTests("timeoutShouldPass");
verifyFailedTests("timeoutShouldFailByException", "timeoutShouldFailByTimeOut");
}
}
}