一旦测试类失败,TestNG会跳过类

时间:2014-01-16 23:40:45

标签: testng

我使用testng运行一个包含大约20个测试类的包,我的xml文件是这样的

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="PageTest" parallel="classes" thread-count="5"> 
    <packages>  
        <package name="testpagename"/>         
    </packages> 
</test>     
</suite>

我的测试类定义为

public class testdemo {
    @BeforeClass    
    public void setUpClass(){       

    }
    @AfterClass
    public void afterClass(){
    }

    @Test
    public void testMethod1(){
    }

    @Test(dependsOnMethods = {"testMethod1"})
    public void testMethod2(){
    }

}

当测试正在运行时,由于某种原因,其中一个测试类由于意外异常而失败,我期望以下测试类保持运行,直到所有类都被执行。但事实上,由于失败,其余的课程都会被跳过,有人能告诉我如何解决这个问题吗?

由于

3 个答案:

答案 0 :(得分:0)

将完整代码放入try块并使用catch块使assert语句失败。因此,下一个TestNG方法不会被先前的失败所吸引。

@Test
Public void method1(){
try{
// Here will ur code which may cause exception
}
Catch(Exception e){
   Assert.fail("  ");
}
}
@Test
Public void method2{
// implement in same way as method 1

}

答案 1 :(得分:0)

我想如果@ Before *方法失败,将跳过所有后续类。尝试在套件定义中使用configfailurepolicy =“continue”属性。

答案 2 :(得分:0)

在TestNG文档中指出,我们可以通过两种方式创建依赖关系:

1.Hard依赖。您依赖的所有方法必须运行并成功运行。如果您的依赖项中至少发生一次故障,则不会在报告中调用并将其标记为SKIP。

2. 软依赖。这是您要求的。您将始终在您依赖的方法之后运行,即使其中一些方法失败了。当您只想确保您的测试方法按特定顺序运行但是它们的成功并不真正取决于其他人的成功时,这非常有用。通过添加&#34; alwaysRun = true&#34;来获得软依赖性。在@Test注释中。

Sum