【问题标题】:quitting testNG tests programmatically以编程方式退出 testNG 测试
【发布时间】:2012-12-14 07:33:51
【问题描述】:

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

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

有没有办法做到这一点?

谢谢,

约翰

【问题讨论】:

  • 不太确定我是否理解您的问题,如果遇到某些特定情况,您正在寻找的是在运行时中断正在运行的测试套件?成功了吗?为什么还要麻烦构建其他测试?
  • 我想完全退出测试,因为这个检查是为了检查后台运行的东西,但是在测试开始之前我不能检查它。
  • 抱歉这么久才回复,我正在度假。因此,如果我明白了,您是否想在条件失败时停止运行测试?
  • 是的,这就是我想做的。谢谢。

标签: testng selenium-webdriver


【解决方案1】:

只是我的想法

如果您的条件满足并在 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);
      }

}

【讨论】:

  • 谢谢桑托什,我会试试你的建议。
【解决方案2】:

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

但是如果你想在所有方法都被执行后使用@AfterClass

只放 System.exit() 不是一个好习惯。一旦您退出测试,它将不会产生任何测试拆卸操作和报告生成。一旦发现这种情况,干净的方法就是跳过测试。

您可以为此使用 testng SkipException。示例请参见下面的代码

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

谢谢, 佛法

【讨论】:

  • 您好 Dharshana,感谢您的回复。我不想跳过而是退出并生成报告:) 这样我就可以告诉开发人员某些服务没有运行并且他们可以打开它,因为如果这个服务没有运行,那么继续测试就没有意义了。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多