私はCIサーバー(Hudson)を使用していますが、これは陽気にビルド、単体テストを実行、開発環境にデプロイしますが、統合テストを実行したいと思います。
統合テストはデータベースにヒットし、そのデータベースは問題のテストに関連するデータを含むように常に変更されます。しかし、これは問題を引き起こします-データベースが1つのテストのデータでスプラットされていないことを確認し、最初のテストセットが完了する前に、そのデータが2番目のプロジェクトによって上書きされることを確認するにはどうすればよいですか?
私は現在「希望」方法を使用していますが、現時点ではそれほどうまく機能していませんが、CIで設定されている統合テストの数が少ないという事実が主な原因です。
私が見ると、次のオプションがあります。
- ローカルの(メモリ内の)テストデータベース
インメモリのデータベースがOracleのトリガーやパッケージなどのすべての恐ろしさを処理できるかどうかはわかりませんが、テスト中に価値がないと感じるものはありません。 - CIエグゼキューターローカルデータベース
これをセットアップして最新の状態に保つには、かなりの作業が必要になりますが、オプションとしてはまともです(ほとんどの作業は、現在のCIデータベースを最新に保つために既に行われています)。 - 単一の「統合テスト」エグゼキュータ
実装するのが最も簡単なようですが、統合テストがかなり遅れることがあります。 - データベース(またはテーブルのセット)のロック
私はいくつかの方法を逃したと確信しています(それらを追加してください)。CIサーバーでデータベースベースの統合テストをどのように実行しますか?どのような問題があり、どのような方法をお勧めしますか?(注:私はHudsonを使用していますが、CIサーバーの回答を受け入れて満足しています。詳細がそうでなくても、確実に移植可能なアイデアです)。
乾杯、
MLK