23

ビジュアルスタジオは、メソッドに基づいて私のためのユニットテストプロジェクトを作成しました(右クリックしてテストを追加)。データベースにアクセスしようとすると、例外が発生します。テスト - 接続文字列がありません

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

しかし、connStringSettingsがnull:私の接続が何であったかを確認するには、このコードを実行しました。調べると、ConnectionStringsコレクションのカウントは1にしかなりません。それは私のweb.configから読んでいないようです。

私のDALは分離されており、コードで設定された接続文字列を持つことはできません。接続文字列は次のようにコードで設定されます。

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

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

+0

データベースにアクセスしている場合、単体テストではなく、統合テストです。単体テストの場合は、データアクセス層をモックアウトする必要があります。このとき、接続文字列のアスペクトは無関係です。 –

+0

@ DBM - 良い点。タグとタイトルを更新しました。 –

答えて

51

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

+1

これはまだ唯一の実行可能な解決策です(これまでのところは何も見つかりませんでしたが、とにかく全体が見つかりませんでした)。接続文字列ができたらどうなりますか?テストプロジェクトで変更されたことを確認する必要がありますか? – Trent

+0

申し訳ありませんが、あなたの接続文字列が既にテストクラスによって自動的にラップされている場合、あなたはそれについて何もできません。顧客接続文字列を使用してインスタンス化できるDALコンストラクタのオーバーロードがある場合、そのコンストラクタに文字列を入れるだけです。残念ながら、接続文字列を変更する必要がある場合は、手動で両方のプロジェクトで行う必要があります。結局のところ、最終的な答えはユニットテストが本当に*データベースにアクセスすべきではないということです。そのため、接続文字列は技術的には必要ありません。 – eouw0o83hf

+0

データベースにアクセスするつもりがない場合、どのようにクエリが動作しているかテストしますか? – Trent

5

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

6

これは私にとってはうまくいった。私はユニットテストプロジェクトの下にApp.configファイルを追加しました。しかし、私たちがsynatxに従うことを確認してください。さもなければ、例外がスローされます。

<connectionStrings> 

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

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

</connectionStrings> 

-3

別の解決策は、ソリューションプロパティページ(溶液 - >プロパティ)に行くことです

スタートアッププロジェクト - シングルスタートアッププロジェクトをチェック有するものですconfig。

Select、ok - done。

関連する問題