Selenium と NUnit を使用して統合テストを作成しようとしているときに、いくつかの問題が発生しています。
NUnit テストで Selenium RC を使用して ASP.NET Web アプリを駆動しようとしていますが、実際のユーザーが行うすべてのことを実際に DB で実行するようにテストしたいと考えています。当然のことながら、Selenium がそれを行った後にデータベースがロールバックされればいいのですが、db には ui からのデータを含む新しい行 (など) が含まれていると主張しました。
だから、ここに私が持っているセットアップがあります(ある種の疑似コードで):
TestMethod()
{
Using(new TransActionScope)
{
Selenium.StartSelenium()
Selenium.SelectAndClickAndDoStuffInUI()
AssertSomething()
}
}
ここで、SelectAndClickAndDoStuffInUI メソッドが UI 内でクリックし、独自のデータ フレームワークを起動します。私たちのフレームワークはすべてのものを db に書き込み、AssertSomething メソッドは db ですべてが正常であることをアサートします。フレームワークは、内部の仕組みでトランザクション (「必須」) を使用します。
それで、すべて大丈夫ですよね?いいえ、残念ながら違います。上記の例の TransActionScope はコミットされるべきではありません (そこに txScope.Complete() 呼び出しはありません)。したがって、すべての内部トランザクションもロールバックされるはずですよね? そうではなく、Selenium が UI を通じて行うことはすべて DB にコミットされます。
これがどこでうまくいかないのかを本当に理解しようとしましたが、これまでのところ答えが見つかりませんでした。
読んでくれてありがとう、そして(最後に)これが実際の質問です:
私の例で示したケースで TransactionScope がロールバックされないのはなぜですか?
状況とセットアップに関する追加情報を喜んで提供します!