UI テストに WebAii ライブラリを使用しています。コンポーネントがデータベースと同じレコードを表示するかどうかをテストしたいので、テストを実行するときだけ、アプリケーションの接続文字列をテスト データベースを指すように切り替える必要があります。それを行う最良の方法は何ですか?アプリを実行する前に接続文字列を動的に変更する方法は? ありがとう
2 に答える
それはどのようなアプリケーションですか?これはまず、コードが適切に分解されていないことを示している可能性があります。次に、コードをテストするための別の環境を用意するのが一般的です。
たとえば、Visual Studio を使用して ASP.NETにデプロイする場合、 Web.config ファイル変換を使用して、 test.contoso.com と www.contoso.com などにデプロイするときに異なる値を設定できます。変換構文を使用すると、別の構成を展開するときに、新しい接続文字列を定義したり、基本 Web.config から既存の接続文字列を変更したりできます。
単一の環境があり、それを制御している場合は、テストの前に、「テスト」接続文字列を含む web.config をアプリ ルートにコピーする (Power) シェル スクリプトをいくつか記述できます。次に、2 つ目のスクリプトを実行して、テストの実行後に元の web.config をリセットします。
テストを実行するコンテキスト内で deploy ディレクトリにアクセスできる場合は、単体テスト プロジェクトに Web.test.config ファイルを含めることもできます。で[AssemblyInitialize]
:
- _\\{your app server}{your app directory}\Web.config を\\{your app server}{your app directory}\Web.config.origにファイル コピーします。
- Web.test.configを\\{your app server}{your app directory}\Web.configにファイル コピーします。
- 数秒寝る?
次に、逆を行い[AssemblyCleanup]
ます。
他の戦略も存在します。デバッグ モードでは、アプリケーションにオーバーライドを組み込むことができます。これにより、さまざまなもの (特別なファイル、追加の構成、Cookie、追加のクエリ文字列) がチェックされます。または、アプリに設定マネージャーを配置して、テストを調整するときにテスト セットアップでインストルメント化できるようにすることもできます (UI をクリックして DB 設定を変更します)。
ただし、コードを因数分解して依存関係を減らすことで、最高の複合報酬を得ることができる可能性は非常に高いです。次に、データベースをスタブ/モック/フェイクする単体テストを作成できます。コード カバレッジ ツールを使用して、特定のシナリオをテストしたことを確認したり、追加の統合テストがその時点でカバレッジの重複になることを確認したりできます。
接続文字列を Web.config ファイルに保存していますか? その場合、テストを開始する直前に新しい Web.config を展開し、コマンド ラインを使用して IISRESET を送信します。
参考までに、これらはWebAii 専用の公開フォーラムで終日回答している種類の質問です。
コーディ テレリック テクニカル サポート