特定の条件が満たされた場合、プログラムで完全なテストスイートを終了するにはどうすればよいですか?
@AfterMethodで条件をチェックし、fail()メソッドを使用してAfterMethodアノテーションを失敗させています。しかし、AfterMethodアノテーションは、私のテストスイートのテストの数と同じ回数実行されます。ただし、テストはスキップされます。
これを行う方法はありますか?
ありがとうございました、
ジョン
特定の条件が満たされた場合、プログラムで完全なテストスイートを終了するにはどうすればよいですか?
@AfterMethodで条件をチェックし、fail()メソッドを使用してAfterMethodアノテーションを失敗させています。しかし、AfterMethodアノテーションは、私のテストスイートのテストの数と同じ回数実行されます。ただし、テストはスキップされます。
これを行う方法はありますか?
ありがとうございました、
ジョン
ただ私の考え
条件が満たされた場合は、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);
}
}
@AfterMethod アノテーションは、テスト内のすべてのテスト メソッドの後にトリガーされます。しかし、各テスト メソッドの後に条件を検証したい場合、これは適切な注釈です。
ただし、すべてのメソッドが実行された後にそれを実行する場合は、 @AfterClass を使用します
System.exit() を置くだけではお勧めできません。テストを終了すると、テスト ティアダウン アクションとレポート生成は生成されません。これを行うためのクリーンな方法は、そのようなシナリオを見つけたらテストをスキップすることです。
そのために testng SkipException を使用できます。サンプルについては、以下のコードを参照してください
@AfterMethod
public void afterMethod() throws Throwable {
if(CONDITION_MET==true)
{
throw new SkipException ("Skipping Test: ");
}
}
ありがとう、ダルスナナ