2012-05-10 4 views
0

UIテスト用にWebAiiライブラリを使用しています - コンポーネントがデータベースにあるレコードと同じレコードを表示するかどうかをテストしたいので、テストを実行している間だけのデータベース。それを行う最善の方法は何ですか?アプリケーションを実行する前に動的に接続文字列を変更する方法は?ありがとうUIテスト用の接続文字列を動的に変更する

答えて

0

それはアプリケーションのどのような?これはおそらく最初によくないコードの表示です。次に、コードをテストするための別個の環境を持つことが一般的です。

たとえば、ASP.NET with Visual Studioにデプロイする場合は、Web.config file transformationsを使用してに展開するときに別の値を設定できます。 test.contoso.comとwww.contoso.com。 transformation syntaxを使用すると、別の構成を展開するときに、新しい接続文字列を定義したり、ベースWeb.configから既存の接続文字列を変更することができます。

1つの環境でそれを制御している場合は、テストの前にアプリケーションルートに "test"接続文字列を含むweb.configをコピーする(Power)シェルスクリプトを書くことができます。次に、テストが実行された後、元のweb.configをリセットするために2番目のスクリプトを実行します。

テストを実行するコンテキスト内でdeployディレクトリにアクセスできる場合は、単体テストプロジェクトにWeb.test.configファイルを含めることさえできます。 [AssemblyInitialize]で:

  1. ファイルコピー_ \\ {アプリのサーバー} {アプリのディレクトリ} \ Web.configファイル\\ {アプリのサーバー} {アプリのディレクトリ} \ Web.config.orig 。
  2. ファイルコピーWeb.test.config\\ {あなたのアプリケーションサーバー} {あなたのアプリケーションディレクトリ} \ Web.config
  3. 数秒間スリープしますか?

[AssemblyCleanup]で逆にしてください。

他の戦略も存在します。デバッグモードでは、さまざまなもの(特殊ファイル、追加の設定、Cookie、追加のクエリ文字列)をチェックするときに、アプリケーションのオーバーライドを構築できます。または、アプリケーションに設定マネージャを用意して、テストを設定するときにテストセットアップで計測を行うことができます(UIをクリックしてDB設定を変更する)。

ただし、依存関係を減らすためにコードを分解することで、最高の複合報酬を得ることができます。次に、データベースをスタブ/モック/フェイクするユニットテストを書くことができます。コードカバレッジツールを使用して、特定のシナリオをテストしたことを確認したり、追加の統合テストがその時点でカバレッジの重複となることを確認することができます。

関連する問題