0

ここで私のシナリオを説明して、私が何を望んでいるのかが明確になるようにします。

クラス内にいくつかのテストを実行する一連のメソッドがあります。それらはすべて互いに関連しており、順番に実行する必要があるためDependsOnMethod@Test注釈に含まれています。また、テストごとに 7 つの値を返すa も使用してDataProviderいます (n 行と 7 列)。このデータ プロバイダーをメソッド レベルに配置すると、すべての行が読み取られ、使用可能なすべてのデータ セットでメソッド 1 が実行され、次のメソッドに移動します。

このシーケンスを変更したい、メソッド 1 (データ セット 1)、メソッド 2 (データ セット 1)、メソッド 1 (データ セット 2) を実行したい ... これは多くの人が抱く疑問です。この質問を再度投稿する理由は、提案されたアイデアをすべて試したからです。

Factoryアノテーションを使用すると、Eclipseでテストがまったく開始されず、NullPointerException. @BeforeClassファクトリ アノテーションを使用すると実行されないアノテーションを使用します。クラスのコンストラクタにこのファクトリ アノテーションを付けています。

testng.xml ファイルでフラグを試しましたgroup-by-instanceが、それも失敗します。同じ順序でテストが実行されます。

誰かが私のために正しい順序でこの全体を説明できますか? 可能であれば、これは達成できると確信していますが、どこかで何かが欠けていると思います。

これに関するヘルプは大歓迎です。

PS 私は Java が苦手で、ここ 2 ~ 3 週間は TestNG を使用しています。

ありがとう、ジョン

4

2 に答える 2

0

「DataSet」という注釈付き:JavaDoc:

org.unitils.dbunit.annotation.DataSet
@Target(value={METHOD, TYPE})
@Retention(value=RUNTIME)
@Inherited

テスト実行の前にデータセットをロードする必要があることを示す注釈。

クラスに注釈が付けられている場合、クラス内の各テストメソッドを実行する前にテストデータセットがロードされます。データセットファイル名は明示的に指定できます。そのようなファイル名が指定されていない場合は、最初に「classname」。「testmethod」.xmlという名前のデータセットが試行されます。そのようなファイルが存在しない場合は、「classname」.xmlが試行されます。そのファイルも存在しない場合、例外がスローされます。'/'で始まるファイル名は絶対として扱われます。'/'で始まらないファイル名は、現在のクラスを基準にしています。

テストメソッドにDataSetで注釈を付けることもできます。その場合、このテストメソッドを実行する前にロードする必要のあるデータセットを指定します。この場合も、ファイル名を明示的に指定できます。指定しない場合は、デフォルトが使用されます。最初の「classname」。「methodname」.xml、およびそのファイルが存在しない場合は「classname」.xmlです。

例:

 @DataSet
  public class MyTestClass extends UnitilsJUnit3 {

      public void testMethod1(){
      }

     @DataSet("aCustomFileName.xml")
      public void testMethod2(){
      }
  }

クラスと同じディレクトリにあるtestMethod1のMyTestClass.xmlまたはMyTestClass-testMethod1.xmlという名前のデータセットファイルをロードします。また、testMethod2の場合、クラスと同じディレクトリにあるaCustomFileName.xmlという名前のデータセットファイルがロードされます。

  public class MyTestClass extends UnitilsJUnit3 {

      public void testMethod1(){
      }

     @DataSet
      public void testMethod2(){
      }
  }

testMethod1のデータセットをロードしません(クラスレベルのデータセットはありません)。testMethod2のMyTestClass.xmlまたはMyTestClass.testMethod2.xmlという名前のデータセットファイルをロードします。著者:

フィリップ・ネヴェン

ティム・デュシェイン

于 2012-01-17T11:14:52.463 に答える
0

最も簡単な方法は、これらのメソッドを手動で呼び出すことです。

@Test(dataProvider = ...)
public void f(int n1, int n2) {
    method1(n1, n2);
    method2(n1, n2);
}

ただし、インスタンスごとのグループ化は機能するはずです。再現できるように、小さなクラスを testng-users リストに電子メールで送信できますか?

ありがとう。

于 2012-01-17T19:00:04.680 に答える