我目前正在努力从我的类库(和单元测试)中读取WinForms应用程序中App.config
的连接字符串。
我添加了一个'测试'进入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
的值为空。
我做错了什么?
答案 0 :(得分:1)
您还需要将连接字符串键添加到Test项目的配置中。
答案 1 :(得分:1)
关于你对DJ Kraze的评论:“ @DJ KRAZE,如果我把0作为索引,它会返回一个SQLExpress”aspnetdb.mdf“的连接字符串。如果我把1作为索引,我会得到一个例外( IndexOutOfRangeException
),显然找不到我的字符串。“
问题是您忘记了配置元素。例如:
参考MSDN:Storing and Retrieving Connection Strings
<?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 文件中定义的连接字符串。