9

プロジェクトの 1 つで単体テストを行いたいと考えています。これは Web プロジェクトであり、開発用コピーとは別に実行されるこのプログラムのコピーは1 つだけです。

を使用する単体テストをいくつか書きたいと思いますweb.configweb.config通常、テスターは特定の値の保持に応じてテストなしでコードをテストしたいため、この外部依存関係をスタブ化することを理解しています。

ただし、web.config私のプロジェクトでは常に特定の値を保持する必要があり、無効な値に設定されている場合に失敗する単体テストが必要です。たとえば、値の 1 つは SQL 接続文字列です。

から接続文字列を読み取るテストを作成したいと思いますweb.config。このテストでは、接続文字列を使用してサーバーに接続し、おそらく のような非常に単純なコマンドを実行できると思いSELECT system_user;ます。コマンドが正常に実行され、何かが返された場合、テストは合格です。そうしないと、失敗します。web.configテスト中のプロジェクトから接続文字列を読み取る必要があります。

もちろん、 はConfigurationManager通常web.config、別のプロジェクトで を検索しません。元のプロジェクトからテスト プロジェクトに手動でコピーすることもできますが、web.configすべてのテストの前にそれを行う必要があり、他の誰かにそれを任せることはできません。

web.configテスト プロジェクトを別のプロジェクトから読み取るにはどうすればよいですか?

4

7 に答える 7

4

web.configの設定を検証しようとしているようです。これはデプロイメントレベルの問題であり、単体テストとは異なります。

単体テストでは、コアロジックが期待どおりに実行されていることがわかります。展開の検証により、アプリケーションが適切にインストールおよび構成され、安全に使用できることがわかります。単体テストは開発者にとって意味があり、展開の検証はアプリを展開しているエンドユーザーまたは管理者にとって意味があります。

このような状況では、アプリに「システムコンソール」を組み込むのが好きです。このコンソールには、次のような多数の自己診断チェックが含まれています。

  1. 接続文字列が正しく構成されていることを確認します
  2. サードパーティのサービスが利用可能で機能していることを確認する
  3. すべての構成設定が有効であり、ランタイムエラーが発生しないことを確認します(たとえば、パスが存在する、Webユーザーアカウントが必要に応じて読み取り/書き込みアクセス権を持っているなど)

この種の構成と展開の検証をユニットテストスイートから分離することを検討することを強くお勧めします。作業が簡素化されるだけでなく(別のプロジェクトから構成ファイルをロードする必要がないため、顧客が本当に気に入っているツールの一種でもあります:)

于 2010-03-05T18:15:10.437 に答える
3

ConfigurationManager.OpenXXX()メソッドを使用して、他の構成ファイルを読み込んで調べることができます。

このWebConfigurationManagerクラスには特に web.config ファイルを開くメソッドがあり、リンク先のドキュメント ページにはさらにいくつかのコード例があります。構成オブジェクトをロードしたら、セクションとキーを調べることができます。

var cfm = new ConfigurationFileMap("path/to/web.config");
var config = WebConfigurationManager.OpenMappedWebConfiguration(cfm);
于 2010-03-05T18:03:12.197 に答える
1

Web サイトの元の web.config ファイルをコピーせずに Unit Testing プロジェクトに使用する場合は、Modify VS Local-Test-Settingsを実行できます。

以下は、ユニット テスト プロジェクトで ASP.net Web サイト構成ファイルを使用するための段階的な手順です。リンクhttp://forums.asp.net/t/1454799.aspx/1に従ってください

于 2012-01-04T18:39:46.033 に答える
1

大ハンマーで蚊をつぶそうとしているように聞こえます。導入チェックリストの一部として、これを手動で行ってみませんか。connectionString を手動で確認するタスクがあります。

または、自動化したい場合は、connectionString をチェックするプログラムを作成し、それを継続的インテグレーション サーバー (サーバーがあると仮定) にアタッチし、connectionString が間違っている場合はビルドを失敗させます。

単体テストは、構成ではなく、コードのテストを目的として使用します。

于 2010-03-05T18:53:12.353 に答える
1

同様の質問をしたので、チェックしてみてください。

予想されるすべての web.config 設定が定義されていることをテストするにはどうすればよいですか?

最終的には機能するようになりましたが、厄介な部分は、ソース管理がコピーされた構成ファイルを常にロックしていることです。また、web.config の名前を app.config に変更して、Web 以外のプロジェクトにコンパイルすることもできます。

于 2010-03-05T18:39:56.053 に答える
0

単体テスト プロジェクトで、app.config ファイルを追加し、テストに使用する web.config ファイルから設定を追加します。

于 2010-03-05T18:34:52.243 に答える