1

App.config現在、クラスライブラリ(および単体テスト)のWinFormsアプリケーション内から接続文字列を読み取るのに苦労しています。

'test'エントリをApp.config;に追加しました。

<connectionStrings>
     <add name="MyConnString" connectionString="Test;" />
</connectionStrings>

私のTestMethodは次のようになります。

    [TestMethod]
    public void TestConnection1()
    {
        string connString = "";

        if (ConfigurationManager.ConnectionStrings["MyConnString"] != null)
        {
            connString = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
        }

        string expected = "Test;";
        string actual = connString;

        Assert.AreEqual(expected, actual);
    }

これは明らかに失敗します。Actualの値は空です。私は何が間違っているのですか?

ここに画像の説明を入力してください

4

2 に答える 2

1

テスト プロジェクトの構成にも接続文字列キーを追加する必要があります。

于 2013-03-08T08:52:11.110 に答える
1

DJ Kraze へのコメントについて: " @DJ KRAZE、インデックスに 0 を指定すると、SQLExpress "aspnetdb.mdf" の接続文字列が返されます。インデックスに 1 を指定すると、例外 ( IndexOutOfRangeException) が発生するので、明らかに私の文字列見つかりません。"

問題は、構成要素を忘れていることです。例えば:

MSDN から参照:接続文字列の保存と取得

<?xml version='1.0' encoding='utf-8'?>
  <configuration>
    <connectionStrings>
      <clear />
      <add name="Name" 
       providerName="System.Data.ProviderName" 
       connectionString="Valid Connection String;" />
    </connectionStrings>
  </configuration>

machine.config ファイルには、<connectionStrings>Visual Studio で使用される接続文字列を含むセクションも含まれています。Windows アプリケーションのapp.configファイルからプロバイダー名で接続文字列を取得すると、 machine.config の接続文字列が最初に読み込まれ、次にapp.configのエントリが読み込まれます。connectionStrings 要素の直後に clear を追加すると、メモリ内のデータ構造からすべての継承された参照が削除されるため、ローカルのapp.configファイルで定義された接続文字列のみが考慮されます。

于 2013-03-08T09:14:18.653 に答える