以编程方式退出testNG测试

时间:2012-12-13 12:26:42

标签: testng selenium-webdriver

如果满足某个条件,我如何以编程方式退出整个测试套件?

我正在检查@AfterMethod中的条件并使用fail()方法使AfterMethod注释失败。但AfterMethod注释的执行次数与我的测试套件中的测试次数相同。但是跳过了测试。

有办法做到这一点吗?

谢谢,

约翰

2 个答案:

答案 0 :(得分:0)

只是我的想法

如果您的条件满足,则在afterMethod注释方法中调用afterClass注释方法&在afterClass中停止你的java进程。

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);
      }

}

答案 1 :(得分:0)

@AfterMethod注释在测试中的每个测试方法之后触发。但是如果你想在每个测试方法之后验证条件,那么这是正确的注释。

但是如果要在执行所有方法后执行此操作,请使用@AfterClass

只是把System.exit()放在一个不太好的做法。一旦退出测试,它将不会产生任何测试拆卸操作和报告生成。一旦找到这样的场景,干净的方法是跳过测试。

您可以使用testng SkipException。请参阅以下代码了解样本

  @AfterMethod
      public void afterMethod() throws Throwable {
          if(CONDITION_MET==true)
          {
             throw new SkipException ("Skipping Test: ");
          } 
      }

谢谢你, Dharsnana