Seleniumなどの統合テストフレームワークから作成されたデータベーストランザクションをベストプラクティスまたはロールバックする方法について提案がありますか?統合(Selenium)テスト後のロールバックデータベース
ここに私たちの現在の状況があります:ユニットテスト環境でうまくいくいくつかの単体テストを持つ.net Webプロジェクトがあります。各テストは[SetUp]でトランザクションをオープンする親クラスを継承し、トランザクションを[TearDown]に戻します。各テストの後、ユニットテストデータベースは元の状態に復元されます。
ただし、統合環境に移行すると状況は変わります。私たちの継続的な統合サーバーはコミットを自動的にコンパイルし、テストサーバーにプッシュします。そのため、サーバーは常に最新のコードで実行されます。また、サイトとのユーザーのやりとりを自動化するためにSeleniumインスタンスをセットアップしました。セレンテストは、基本的には既存のSeleniumサーバーと通信し、サーバーには「ブラウザを起動してhttp://testsite/TestPage.aspxに行きます」というメッセージが表示されます。「def」というIDを持つフォームフィールドに「abc」というテキストを入力します。
各テストは、バニラ単体テストと同様の方法で実行されますが、重要な例外はありません.Seleniumによる変更は完全に異なるスレッド/アプリケーションで行われるため、少なくとも、テストティアダウンでそれらをロールバックすることはできません)。
私たちはまだこのための良い解決策にはなりません。今、SqlCommandを使用してデータベースをバックアップするSQL文を実行し、テストの最後にデータベースをシングルユーザーに設定し、現在のdbを削除してから、リストアするこれは理想的ではありません。なぜなら、これはDBに接続されたアプリケーションを効果的に削除し、アプリケーションを再初期化する必要があるからです。
これは以前に解決された問題ですか?どんなアドバイスも素晴らしいだろう。
ありがとうございます!
おかげでステファン、 これが最善の解決策であるように思わ - 我々だけで切り捨てテーブルに頼っとしまし再読み込みをすべてのテストの後の備品は、実際には*課税されていません。それはうまくいくようです。 もう一度おねがいします! – matt
この操作をロールバックできないため、oracleでの切り詰めは非常に高速です。スクリプトは私たちの状況では簡単で、スクリプトはすでに利用可能で、他のものを保守する必要はありません。 –
このスクリプトは、すべてのテストメソッドまたはテストケースの前に実行されますか?私はすべてのテストメソッドを仮定します....また、このスクリプトはどのように実行されますか?あなたはバックエンドにサービスAPIを持っていますか? – HDave