web-dev-qa-db-ja.com

テスト-接続文字列がありません

Visual Studioは、メソッドに基づいてユニットテストプロジェクトを作成しました(右クリックしてテストを追加)。データベースにアクセスしようとすると、例外が発生します。このコードを実行して、私の接続を確認します。

ConnectionStringSettings connStringSettings = ConfigurationManager.
    ConnectionStrings["myConnectionString"];

ただし、connStringSettingsはnullです。検査すると、ConnectionStringsコレクションのカウントは1つだけになります。私のweb.configから読み取っていないようです。

DALは分離されており、接続文字列をコードで設定できません。その接続文字列は、次のようなコードで設定されます。

set
{
    value = System.Configuration.ConfigurationManager.
        ConnectionStrings["myConnectionString"].ConnectionString;
}

どうすればこれを解決できますか?

25
O.O

App.configファイルを単体テストプロジェクトに追加し、Web.configから接続文字列をコピーします。

更新:より良いソリューション

設定を追加することで当面の問題は解決しますが、実際のデータベース接続に応じて単体テストが行​​われることになりますが、これは素晴らしいことではありません。この問題を解決するより良い方法は、DALを完全にモックし、それを使用しているサービスに渡すことです。

Microsoftは、それについてのガイダンス here を提供しています。セットアップには少し時間がかかりますが、テストをより包括的かつ完全にすることができます。

56
eouw0o83hf

素晴らしいこれは私のために働いた。単体テストプロジェクトの下にApp.configファイルを追加しました。ただし、synatxに従うことを確認してください。そうしないと、例外がスローされます。

<connectionStrings>

    <add name="test" connectionString="" providerName="System.Data.SqlClient" />

    <add name="db" connectionString=""" providerName="System.Data.SqlClient"/>

</connectionStrings>

単体テストのapp.configファイルに接続文字列を追加します。単体テストプロジェクトは、WebプロジェクトのWeb構成にアクセスできません。

5
Brian