我有一个组件从标准.NET配置(app.config)文件中读取一些配置。
当我为这个组件运行单元测试(NUnit)时(使用TD.NET),我注意到没有读取配置文件。
检查AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
我注意到它的'值设置为C:\ Users \ ltal \ AppData \ Local \ Temp \ tmp6D2F.tmp(某些临时随机位置)。
为什么会发生这种情况有原因吗? (它是NUnit还是TD.NET的错?)
我想我可以为了测试而自己设置这个SetupInformation对象,还没有尝试过,但仍然想知道为什么它是这样创建的而不是默认的。
答案 0 :(得分:3)
要解决此问题,您可以在单元测试项目中创建app.config。然后通过单元测试调用它来代替主app.config。然后,您可以在单元测试中更改该app.config中的值,以便更轻松地测试不同的值和配置,即您可以在运行测试之前使用特定值设置测试app.config。
ConfigurationManager.AppSettings[""] = "";
另一种选择可能是将设置放在主项目的Settings.setting文件中。您不必在单元测试项目中更改任何内容。有关设置与app.config之间差异的一些链接 - MSDN forums,StackOverflow,User 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
基本上,他们需要住在测试目录中。