3

私はdbとの相互作用をテストするいくつかの統合テストを書くつもりです。テストごとに、db の特定のスナップショットが必要です。.sql ファイルに保存された各 db スナップショット。私が望むのは、次のように、特定のテスト メソッドで特定のスクリプト ファイルを実行することです。

@Test
public void test_stuff(){
   executeScript(finame.sql);

   ... testing logic ...

   clean_database();
}

休止状態にはこれを行うための手段がありますか?

4

4 に答える 4

3
  • hibernate の起動時に SQL スクリプトを自動的に実行できます。SQL コマンドを import.sql というファイルに記述し、それを CLASSPATH のルートに配置します。

  • テストのためにデータベースをクリーンアップする必要はありません。各テストの最後にロールバックを使用して、テストをトランザクション対応にするだけです。したがって、データベースがテストによって汚染されていないことを確認できます。たとえば、Spring を使用すると、次のようになります。

    @Transactional
    @TransactionConfiguration
    public class MyTest {
    ...
    }
    

Spring を使用しない場合は、デフォルトのロールバック トランザクションをサポートするテスト フレームワークを試してください。

于 2010-01-15T14:40:08.233 に答える
2

非推奨の Session.connection() メソッドのトピックについては、ここで議論されています

于 2010-10-06T06:59:30.207 に答える
0

休止状態のセッション インスタンスを介して、基になる JDBC 接続を取得できます。

https://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html#connection()

したがって、executeScript() メソッドを記述して、ファイル名と休止状態のセッションを取得し、ファイルを読み取り、jdbc 接続で sql を実行できます。

HTH

于 2010-01-15T13:14:15.427 に答える
0

ハイパーソニック SQL について聞いたことがありますか? これは、すべてのテーブルがメモリ内に存在するメモリ内データベースであり、テスト (読み取り、更新、挿入、削除) を実行し、最後に閉じると、すべてのデータが失われます。詳細については、http ://www.hsqldb.org/ を参照してください。

于 2010-08-06T19:30:15.933 に答える