現在、人々はどのようにデータをリセットしたり、WatiN/Wartir テストの残りのテストをクリーンアップしたりしているのでしょうか?
たとえば、ユーザーをシステムに追加するテストがあり、ユーザー名が一意である必要があるとします。明らかに、ユーザーなしでの最初の実行は正常に動作するはずですが、2 回目の実行は手動の介入なしでは失敗します。
現在、人々はどのようにデータをリセットしたり、WatiN/Wartir テストの残りのテストをクリーンアップしたりしているのでしょうか?
たとえば、ユーザーをシステムに追加するテストがあり、ユーザー名が一意である必要があるとします。明らかに、ユーザーなしでの最初の実行は正常に動作するはずですが、2 回目の実行は手動の介入なしでは失敗します。
このために実行できる戦略がいくつかあります。テストを実行するために、Nunit または VS Unit テストで WatiN を使用していると想定しています。
トランザクション を使用する 単体テストで使用されるアプローチは、テスト全体をトランザクションに「ラップ」し、テストの完了時にトランザクションをロールバックすることです。.net では、これに System.Transactions を使用できます。
「スタブ ページ」 を構築する 既存のビジネス ロジックを使用してデータを削除するアプリケーション内のページを構築します。このページは保護する必要があり、理想的には本番環境にデプロイすることさえありません。これが私が推奨するアプローチです。
Web サービスの呼び出し Web サービスを 開発するか、アプリケーションのアプリ層から直接呼び出して削除を実行します。おそらくこれも開発する必要があります。
直接クリーンアップ データにアクセスしてクリーンアップするために、テスト コードにいくつかのクラスを作成します。
これらのいずれについても、テストを実行する前と後にクリーンアップする必要があります。つまり、テストのセットアップとテストのクリーンアップ メソッドでです。2 回行う理由は、テストが失敗し、適切にクリーンアップされていないと想定する必要があるためです。
Linq to SQL を使用 している場合は、Linq to Sql AFAIK を使用します。これはメモリ内で動作し、更新全体をトランザクションに自動的にラップします。SubmitChanges(); を単に呼び出さない場合。メソッドなら問題ないはずですが、私はこれを自分でテストしていません。
データベースをリセットするスクリプトを作成するよう開発者に依頼しました。一連のテストの後、そのスクリプトを呼び出して、クリーンなデータベースから開始します。
Mike - あなたの質問は Watir/WatiN に限ったものではありません。これはあらゆる UI テストに適用されるため、Selenium、Windmill、さらにはヘッドレス統合テスト (HtmlUnit、API テストなど) についても同様のソリューションを検索してください。この質問には、StackOverflow で個人的に数回回答しました。
WaitN は UI テスト用です。
探しているシナリオをテストするために、C# コードを使用してユーザー ID を生成し、一意にすることができます (テストを作成したときに保存された方法とは異なります)。