34

DB チェックへの接続で簡単なテストを実行すると、NUnit でエラーが発生します。

[Test]
public void TestConn()
{
    string  connectionString = ConfigurationManager.ConnectionStrings["FertigungRead"].ConnectionString;
    SqlConnection connection = new SqlConnection(connectionString);
    connection.Open();
    Assert.AreEqual(ConnectionState.Open, connection.State);
    connection.Close();
 }

System.NullReferenceException : オブジェクト参照がオブジェクトのインスタンスに設定されていません。

オンライン:

connectionString = ConfigurationManager.ConnectionStrings["FertigungRead"].ConnectionString;

テストで ConfigurationManager を使用できますか?

4

9 に答える 9

26

はい、できます。app.configテストで参照している構成が実際にテスト プロジェクトのに存在することを確認する必要があります。

つまり、テストが含まれるプロジェクトには、"FertigungRead"その に接続文字列が定義されていませんapp.config

これを行う 1 つの方法は、テスト対象のシステムをリンクとしてapp.configテスト プロジェクトに追加することです。この方法では、変更が両方のプロジェクトで発生します。

于 2010-03-09T13:16:01.667 に答える
3

テスト プロジェクトの構成がメイン プロジェクトの構成と同じである限り、単体テストは機能するはずです。

テスト プロジェクトでビルド前イベントを使用して、アプリケーションの構成ファイルをテスト プロジェクトにコピーすることをお勧めします。これにより、2 セットの構成を維持する必要がなくなります。

$(SolutionDir)path-to-main-project\Web.config $(ProjectDir)App.config をコピーします

于 2010-03-09T13:18:32.300 に答える
1

私の回答を参照してくださいnunit と configs nunit に構成 ファイルの名前を伝える必要があります。デフォルトでnamespace.configを探します

于 2011-04-28T16:34:30.240 に答える
1

SqlConnection が機能するかどうかを確認するために単体テストが必要なのはなぜですか? Microsoft のコードではなく、自分のコードをテストする必要があります。単体テストでも接続文字列が正しいかどうかを確認する意味がわかりません。単体テストで使用される構成は、運用コードで使用されるものと同じではありません。

ただし、通常、単体テスト用の構成データが必要な場合は、テスト プロジェクトに app.config ファイルを作成します。appSettings 要素や connectionStrings 要素などに、テスト環境に適した値を設定します。ただし、ConfigurationManager または SqlConnection が機能するかどうかをテストする必要はありません。維持しなければならないコードを作成するだけですが、それは実際に作成している製品コードを検証するものではありません。

于 2010-03-09T13:25:54.387 に答える
1

男は見てください:http://nunit.net/blogs/?p=9

彼が提案するように、私MyProjectTests.dll.configはプロジェクトルートに入れ、すべてが機能します。

私の設定ファイルの例は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
     <add key="TestKey" value="Ok!"/>
</appSettings>
</configuration>

そして、私は単純なものを使用しています:ConfigurationManager.AppSettings["TestKey"];

于 2011-10-13T21:10:12.343 に答える