5

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

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

经检查AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

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

发生这种情况是否有原因?(是 NUnit 还是 TD.NET 的错?)

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

4

2 回答 2

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

    ConfigurationManager.AppSettings[""] = "";

  • 另一种选择可能是将设置放在主项目的 Settings.setting 文件中。然后,您不必更改单元测试项目中的任何内容。关于设置和 app.config 之间区别的一些链接 - MSDN 论坛StackOverflow用户设置 - MSDN

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

于 2011-05-18T15:35:51.757 回答
1

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

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

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

基本上,它们需要存在于测试目录中。

于 2011-05-18T15:35:31.327 回答