我使用Ant执行一组TestNG测试,如下所示:
<testng suitename="functional_test_suite" outputdir="${basedir}/target/"
classpathref="maven.test.classpath" dumpCommand="false" verbose="2"
haltonfailure="true" haltonskipped="false" parallel="methods" threadCount="2">
<classfileset dir="${basedir}/target/test-classes/">
<include name="**/*Test.class" />
</classfileset>
我希望测试在第一次失败后立即停止。 haltonfailure似乎没有做到这一点,如果整个套件有测试失败,它就会停止ant构建。有没有什么办法可以在第一次失败时暂停套件执行?
由于
答案 0 :(得分:0)
您可以设置各个测试方法的依赖关系。 testng dependencies。如果传递了所需的依赖项,这将只运行测试方法。
答案 1 :(得分:0)
您可以为此目的使用套件侦听器。
public class SuiteListener implements IInvokedMethodListener {
private boolean hasFailures = false;
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
synchronized (this) {
if (hasFailures) {
throw new SkipException("Skipping this test");
}
}
}
@Override
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
if (method.isTestMethod() && !testResult.isSuccess()) {
synchronized (this) {
hasFailures = true;
}
}
}
}
@Listeners(SuiteListener.class)
public class MyTest {
@Test
public void test1() {
Assert.assertEquals(1, 1);
}
@Test
public void test2() {
Assert.assertEquals(1, 2); // Fail test
}
@Test
public void test3() {
// This test will be skipped
Assert.assertEquals(1, 1);
}
}