运行NUnit测试时的错误配置文件(TD.NET)

时间:2011-05-18 15:32:12

标签: c# unit-testing nunit testdriven.net

我有一个组件从标准.NET配置(app.config)文件中读取一些配置。

当我为这个组件运行单元测试(NUnit)时(使用TD.NET),我注意到没有读取配置文件。

检查AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

我注意到它的'值设置为C:\ Users \ ltal \ AppData \ Local \ Temp \ tmp6D2F.tmp(某些临时随机位置)。

为什么会发生这种情况有原因吗? (它是NUnit还是TD.NET的错?)

我想我可以为了测试而自己设置这个SetupInformation对象,还没有尝试过,但仍然想知道为什么它是这样创建的而不是默认的。

2 个答案:

答案 0 :(得分:3)

  • 要解决此问题,您可以在单元测试项目中创建app.config。然后通过单元测试调用它来代替主app.config。然后,您可以在单元测试中更改该app.config中的值,以便更轻松地测试不同的值和配置,即您可以在运行测试之前使用特定值设置测试app.config。

    ConfigurationManager.AppSettings[""] = "";

  • 另一种选择可能是将设置放在主项目的Settings.setting文件中。您不必在单元测试项目中更改任何内容。有关设置与app.config之间差异的一些链接 - MSDN forumsStackOverflowUser Settings - MSDN

  • 当然,第三种选择是通过引入一个接口并将依赖项注入组件,从而轻松地模拟它并进行单元测试,从组件中删除对app.config的依赖。

答案 1 :(得分:1)

默认情况下,.NET运行时查找AppDomain的工作目录,该目录由NUnit在临时位置管理。

此链接提供了两个有关如何获取配置文件的解决方案:

http://blogs.msdn.com/b/josealmeida/archive/2004/05/31/loading-config-files-in-nunit.aspx

基本上,他们需要住在测试目录中。