2012-03-28 13 views
0

プログラムでTestNGを実行しています。何らかの例外によって例外が発生した場合、実行者を停止する必要があるユースケースがあります。私の質問は次のとおりです:例外発生時にTestNG実行プログラムを停止するには?

  1. テストや設定方法で例外が発生した場合、TestNGが強制的に実行を停止する最適な方法は何ですか?
  2. プログラムで実行するときにコンソールで例外をキャプチャしますか?ここで

テストランナーを実行するためのコードスニペットです:

TestListenerAdapter tla = new TestListenerAdapter(); 
IMethodInterceptor im = new TestMethodInterceptor(); 
TestNG testng = new TestNG(); 
testng.setTestClasses(new Class[] { TestClass1.class, TestClass2.class}); 
testng.addListener(tla); 
testng.setMethodInterceptor(im); 
testng.run(); 

答えて

1

私の知る限りでは、停止実行のためには直接の規定はありません。

おそらく、addListener呼び出しを使用して2つのリスナーを追加できます。 ITestListenerを実装し、もう1つはIHookableを実装しています。両方の例は、testngのsiteになります。 ITestListenerはonTestFailure()メソッドを提供します。ここでは、失敗したことを示す値を設定できます。 IHookable実装では、この値を確認してからメソッドを呼び出すことができます。それ以外の場合は、スキップします。

例外印刷は、onTestFailureメソッドでも処理できます。

+0

これは機能します。あなたの提案をありがとう。 –

1

前の回答で説明したように、IHookableを使用すると、以下のすべての方法をスキップして完全なテストスイートのキャンセルをシミュレートする良い方法です。しかし、それがために通知されない(したがって、キャンセルされません)設定方法(@BeforeClass@BeforeMethodでアノテート例えばメソッド)、および実際の処理が起こっているところが多いこれはあります。

これに対処するには、IHookableIInvokedMethodListenerに置き換えることができます。beforeInvocationメソッドも設定方法で起動します。テストの残りの実行をキャンセルする場合は、beforeInvocationが呼び出されるたびにSkipExceptionを投げてください。私の場合は

、これは成功したテスト構造についての仮定を行うことなく、すべての更なる処理をキャンセルしました。

関連する問題