0

私はJUnitを初めて使用しますが、これが私がやろうとしていることです:

  • 私の DataGenerator クラスでデータを生成します。
  • テスト クラス MyTestClass をインスタンス化する
  • テストデータで生成されたデータを MyTestClass に渡します (最初のステップ)
  • テストを実行する
  • TestResult の結果を収集する

上記ですべて動作しますが、 TestResultオブジェクトでタイミング情報 (テストの完了にかかった時間) を確認できません。ここで何か間違っていますか?

上記のアプローチは、同じデータを使用して他のテスト クラスでこれを実行する必要があるためです。

    DataGenerator testData = new DataGenerator();
    MyTestClass myTestClass = new MyTestClass("mytestmethod");
    myTestClass.setBaseLine(testData);
    try {
        TestResult testResult = myTestClass.run();
        System.out.println(testResult.wasSuccessful());
    } catch (Throwable ex) {
        Logger.getLogger(TestSupervisor.class.getName()).log(Level.SEVERE, null, ex);
    }
4

1 に答える 1

0

JUnit 4 には、テストが長すぎるとテストに失敗するタイムアウト アノテーションがあります。

//this test will fail if it takes longer than 1 sec
@Test(timeout = 1000)
public void myTest(){
   ...
}

より良い TestFixture を使用することで、DataGenerator の問題を回避できると思います。

DataGenerator を使用するすべてのテストが同じテスト クラスにある場合、@BeforeClassおよび@AfterClassアノテーションを使用して、テスト間で使用されるデータを設定および破棄できます。(これらのアノテーションを持つメソッドは、すべてのテストが実行される前後に一度だけ呼び出されます)。

于 2013-08-25T19:24:40.460 に答える