2

TestNG を使用して一緒に実行したい DAO 単体テスト クラスがいくつかありますが、TestNG はそれらを並行して実行しようとするため、一部のロールバックが失敗します。ユニット テスト クラスを順番に実行したいのですが、TestNG が次のテストを実行するまでに待機する必要がある最小時間を指定できるようにしたいと考えています。これは達成可能ですか?

PS私は、TestNGがSingleThreadのテストクラスですべてのテストを実行するように指示できることを理解しています.とにかくグループを使用してメソッド呼び出しのシーケンスを指定できるので、おそらく問題ではありません.

4

3 に答える 3

0
  1. クラスを並行して実行したくない場合は、スイートの parallel 属性を false に指定する必要があります。デフォルトでは、false です。したがって、テストを呼び出す方法に変更がない限り、デフォルトで順次実行する必要があると思います。

  2. クラス間に少しの遅延を追加するには、おそらく @AfterClass で注釈が付けられたメソッドに遅延ロジックを追加できます。AFAIK testngには、testng xmlまたはコマンドラインでそれを指定する方法がありません。タイムアウト属性がありますが、それはテストのタイムアウトのためのものであり、おそらくあなたが探しているものではありません.

テスト間の遅延、つまり xml のテスト タグを追加するには、遅延コードを追加できる ITestListener - onFinish メソッドの実装を試すことができます。ごとに実行されます<test>。すべてのテストケースの後に遅延が必要な場合は、すべてのテスト メソッドの実行後に実行される IInvokedMethodListener - AfterInvocation() に遅延コードを実装します。その場合、スイートを呼び出すときにリスナーを指定する必要があります。

それが役に立てば幸い..

于 2012-05-15T06:06:48.540 に答える
0

2 つのテスト間の強い依存関係はどうですか? あなたがそれを書くなら:

@Test
public void test1() { ... }

@Test(dependsOnMethods = "test1", alwaysRun = true)
public void test2() { ... }

thentest2は常に の test1に実行されます。

を忘れないでください。失敗した場合はalwaysRun = trueスキップされます。test1test2

于 2012-05-14T14:49:13.190 に答える