0

特定の条件が満たされた場合、プログラムで完全なテストスイートを終了するにはどうすればよいですか?

@AfterMethodで条件をチェックし、fail()メソッドを使用してAfterMethodアノテーションを失敗させています。しかし、AfterMethodアノテーションは、私のテストスイートのテストの数と同じ回数実行されます。ただし、テストはスキップされます。

これを行う方法はありますか?

ありがとうございました、

ジョン

4

2 に答える 2

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

}
于 2012-12-13T13:22:48.697 に答える
0

@AfterMethod アノテーションは、テスト内のすべてのテスト メソッドの後にトリガーされます。しかし、各テスト メソッドの後に条件を検証したい場合、これは適切な注釈です。

ただし、すべてのメソッドが実行された後にそれを実行する場合は、 @AfterClass を使用します

System.exit() を置くだけではお勧めできません。テストを終了すると、テスト ティアダウン アクションとレポート生成は生成されません。これを行うためのクリーンな方法は、そのようなシナリオを見つけたらテストをスキップすることです。

そのために testng SkipException を使用できます。サンプルについては、以下のコードを参照してください

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

ありがとう、ダルスナナ

于 2012-12-13T23:33:51.110 に答える