0

データベースに行を挿入する単体テストがあり、後で DBUnit がそれらの行を自動的にクリーンアップするようにしたいと思います (DBUnit は最初にこれらの行を挿入しません。これは純粋にテスト対象のコードの責任です)。

ありがとう。

4

3 に答える 3

1

INSERT/UPDATE/DELETE クエリをトランザクション対応にし、テストが完了したらロールバックします。

于 2013-05-29T12:56:45.847 に答える
1

JUnit4 を使用している場合は、注釈を付けて関数を宣言できます。関数は@AfterClassすべてのテストの後に実行され、テーブルに追加したすべての行を削除できます。

JUnit3 には同等のものはありませんが、tearDown()各テストの後に実行されるメソッドをオーバーライドできます ( @AfterJUnit4 のアノテーションに相当)。

于 2013-05-29T12:57:09.087 に答える
1

Before メソッドで外部リソース (ファイル/DB) を割り当てる場合は、テストの実行後にそれらを解放する必要があります。public void メソッドに @After のアノテーションを付けると、そのメソッドは Test メソッドの後に実行されます。すべての @After メソッドは、Before メソッドまたは Test メソッドが例外をスローした場合でも実行されることが保証されています。スーパークラスで宣言された @After メソッドは、現在のクラスの後に実行されます。

例ではファイルをリソースとして示していますが、DB のクリーンアップに使用できます。

 public class Example {
    File output;
    @Before public void createOutputFile() {
          output= new File(...);
    }
    @Test public void something() {
          ...
    }
    @After public void deleteOutputFile() {
          output.delete();
    }
 }
于 2013-05-29T12:57:23.050 に答える