我有一个asp.net MVC应用程序,我正在使用Nunit为其编写测试。运行测试时,Nunit GUI无法找到app.config
。我的Nunit测试项目位于bin / debug文件夹中,同时还有app.config的副本:
我的Nunit项目有以下设置:
<NUnitProject>
<Settings activeconfig="Default" processModel="Default" domainUsage="Default" appbase="C:\Sandbox\HB2\HB2.UnitTests" />
<Config name="Default" binpathtype="Auto" configfile="app.config" path="C:\Sandbox\HB2\HB2.UnitTests\bin\debug\">
<assembly path="bin\debug\HB2.UnitTests.dll" />
</Config>
</NUnitProject>
从我读过的几篇文章中我会认为Nunit应该能够找到app.config,但它并没有。怎么了?
答案 0 :(得分:0)
您似乎正在使用NUnit项目文件。如果是这样,您将拥有类似MyTestProject.nunit
的文件。当您使用项目文件时,NUnit将默认查找与Nunit项目文件同名的文件,而不是使用项目中包含的特定程序集的默认app.config。所以在我的例子中它将是MyTestProject.config
。你还没有说出你的项目是什么,所以我无法给你一个确切的答案......
它以这种方式工作,因为它使得显式使用哪个配置,一旦开始在项目文件中包含更多程序集,这将变得很重要。如果您总是要使用特定程序集中的配置,那么保持两者同步的一种简单方法是设置一个后构建步骤,将配置从该程序集复制到.config位置。
如果在GUI中打开单个程序集,而不是使用项目文件,那么它将获取与该dll相关联的配置(因此在您的示例中为HB2.UnitTests.dll.config)
当我编辑您的问题时,我注意到您正在设置要在项目文件中使用的配置文件。但是,你将它设置为错误的东西。编译生成类库的项目时,编译将重命名app.config。正如我上面所说,这通常是<ouputassembly>.config
。因此,您应该在项目文件中更新此行:
<Config name="Default" binpathtype="Auto" configfile="app.config"
path="C:\Sandbox\HB2\HB2.UnitTests\bin\debug\">
对此:
<Config name="Default" binpathtype="Auto" configfile="HB2.UnitTests.dll"
path="C:\Sandbox\HB2\HB2.UnitTests\bin\debug\">