如果满足某个条件,我如何以编程方式退出完整的测试套件?
我正在检查 @AfterMethod 中的条件并使用 fail() 方法使 AfterMethod 注释失败。但是 AfterMethod 注释的执行次数与我的测试套件中的测试次数一样多。然而,测试被跳过。
有没有办法做到这一点?
谢谢,
约翰
如果满足某个条件,我如何以编程方式退出完整的测试套件?
我正在检查 @AfterMethod 中的条件并使用 fail() 方法使 AfterMethod 注释失败。但是 AfterMethod 注释的执行次数与我的测试套件中的测试次数一样多。然而,测试被跳过。
有没有办法做到这一点?
谢谢,
约翰
@AfterMethod 注释在测试中的每个测试方法之后触发。但是,如果您想在每个测试方法之后验证条件,这是正确的注释。
但是如果你想在所有方法都被执行之后使用@AfterClass
只放 System.exit() 不是一个好习惯。一旦您退出测试,它将不会产生任何测试拆卸操作和报告生成。一旦发现这种情况,干净的方法就是跳过测试。
您可以为此使用 testng SkipException。请参阅下面的代码以获取示例
@AfterMethod
public void afterMethod() throws Throwable {
if(CONDITION_MET==true)
{
throw new SkipException ("Skipping Test: ");
}
}
谢谢你,达斯纳纳
只是我的想法
如果您的条件满足并在 afterClass 中停止您的 java 进程,请在 afterMethod 注释方法中调用 afterClass 注释方法。
public class NewTest {
@BeforeClass
public void beforeClass() {
System.out.println("In before class");
}
@BeforeMethod
public void beforeMethod() {
System.out.println("in before method");
}
@Test
public void test1()
{
System.out.println("in test1 method");
}
@Test
public void test2()
{
System.out.println("in test2 method");
}
@AfterMethod
public void afterMethod() throws Throwable {
System.out.println("in after method");
if(condition)
{
afterClass();
}
}
@AfterClass
public void afterClass() throws Throwable {
System.out.println("in after class ");
System.exit(0);
}
}