Selenium などの統合テスト フレームワークから作成されたデータベース トランザクションをロールバックするためのベスト プラクティスまたは推奨される方法について、誰か提案はありますか?
現在の状況は次のとおりです。ユニット テスト環境で正常に動作する多数のユニット テストを含む .net Web プロジェクトがあります。各テストは、[SetUp] でトランザクションを開く親クラスを継承し、トランザクションをロールバックします。 [ティアダウン]。各テストの後、単体テスト データベースは元の状態に復元されます。
ただし、統合環境に到達すると状況が変わります。当社の継続的インテグレーション サーバーは、コミットを自動的にコンパイルしてテスト サーバーにプッシュするため、サーバーは常に最新のコードで実行されます。また、Selenium インスタンスをセットアップして、サイトとのユーザー インタラクションを自動化しました。Selenium テストは基本的に既存の Selenium サーバーと通信し、サーバーに次のように伝えます。「ブラウザーを起動してhttp://testsite/TestPage.aspxに移動し、id が「def」のフォーム フィールドにテキスト「abc」を入力します。アサートします。新しいページにテキスト 'xyz' が含まれています"
各テストはバニラ単体テストと同様の方法で実行されますが、重要な例外があります: Selenium によって行われた変更は、完全に異なるスレッド/アプリケーションで行われるため、できません (私は *できないと思います.少なくとも) テスト ティアダウンでそれらをロールバックします。
これに対する適切な解決策はまだ見つかっていません。現在、SqlCommand を使用して sql ステートメントを実行し、データベースをバックアップしています。テストの最後に、データベースをシングル ユーザーに設定し、現在のデータベースを削除して復元しています。古いコピー - これは理想的とは言えません。これは、DB にアタッチされたアプリケーションを事実上強制終了し、アプリを再度初期化する必要があるためです。
これは以前に解決された問題ですか?どんなアドバイスも素晴らしいでしょう。
ありがとう!