NUnit和app.config的问题

Mik*_*ike 33 nunit configurationmanager app-config visual-studio

当我对连接到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();
 }
Run Code Online (Sandbox Code Playgroud)

System.NullReferenceException:未将对象引用设置为对象的实例.

在线:

connectionString = ConfigurationManager.ConnectionStrings["FertigungRead"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

我可以在测试中使用ConfigurationManager吗?

Ode*_*ded 26

是的你可以.您需要确保在测试中引用的任何配置实际上都存在于app.config测试项目中.

换句话说,您的测试所在的项目没有在其中"FertigungRead"定义的连接字符串app.config.

一种方法是将app.config测试中的系统作为链接添加到测试项目,这样两个项目都会发生任何更改.


ama*_*jee 5

我想补充一点。nunit 的文档中有一个注释,应该根据使用场景配置文件命名和放置。我被这个问题困住了一段时间。

文档说:

如果正在加载单个程序集,则配置文件被赋予具有配置扩展名的程序集文件的名称。例如,用于运行 nunit.tests.dll 的配置文件必须命名为 nunit.tests.dll.config 并与 dll 位于同一目录中。

如果正在加载 NUnit 项目,则配置文件使用项目文件的名称并将扩展名更改为 config。例如,项目 AllTests.nunit 需要一个名为 AllTests.config 的配置文件,该文件与 AllTests.nunit 位于同一目录中。加载 Visual Studio 项目或解决方案时遵循相同的规则。

http://www.nunit.org/index.php?p=configFiles&r=2.2.10


iva*_*n_d 5

  1. 转到NUnit/Project/Edit ...
  2. 在Configuration Property面板中,转到Configuration File Name
  3. 把你的.AssemblyName .dll.config 放在那里

注意:如果不起作用,请尝试添加路径,例如bin\Debug\yourAssemblyName .dll.config

您的测试项目文件yourAssemblyName .nu​​nit将更新.

是的,请确保您的测试项目中的App.config与您在测试中访问的内容相匹配,即

[Test]
public void TestConn()
{
   var sss = ConfigurationManager.AppSettings["TestKey"];
}
Run Code Online (Sandbox Code Playgroud)

App.config中

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="TestKey" value="testKeyValue"/>
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)