这是我的设计:
/
solution.sln
Core/
Core.csproj
web/
web.csproj
Web.config
Test/
Test.csproj
App.config
build/
_PublishedWebsites/web/etc...
test.dll
test.dll.config
Core.dll
log4net.dll我在Test项目中编写了单元测试,测试Core项目的功能。所有项目都使用log4net,所有项目都使用相应的App.config或Web.config文件配置
[assembly: log4net.Config.XmlConfigurator(Watch = true)]在他们的AssemblyInfo.cs里。
这些项目是使用NAnt构建到build目录中的。
当我从Visual (2010 Professional)运行“单元测试”时,一切都正常。
但是当我试图直接执行MSTest时
MSTest.exe /resultsfile:TestResults.trx /noisolation /testcontainer:build\test.dll所有测试用例都会失败,但有以下错误:
log4net:ERROR Failed to find configuration section 'log4net' in the application's .config file这让我感到困惑,因为test.dll.config文件最明确地包含了log4net配置部分。
MSTest创建的文件夹也包含配置文件。
/flopes_MyMachine 2015-10-08 08_48_59/Out/
Core.dll
test.dll
test.dll.config
log4net.dll在我看来,也许MSTest使用了错误的配置文件,或者没有找到test.dll的配置文件?这说得通吗?有办法告诉MSTest使用哪个配置文件吗?
我做了一个很小的测试输出来查看加载了什么配置文件,它增加了更多的神秘,因为显然加载的配置文件是:
D:\Programme\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe.Config这怎麽可能?为什么MSTest不只是加载就在 test.dll旁边的配置文件?这有什么意义?
发布于 2015-10-02 06:46:26
我想看看这个问题和答案:MSTest.exe not finding app.config
其中规定,您应该创建一个测试运行配置,其中包括.config作为部署项。
还检查所使用的配置是否正确;查找活动配置文件的方法:
// Get the user-config:
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath
// Simple approach
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile? Is it the correct .config用@florianpeschka检查几件事情,让我们相信问题是noisolation-flag。这有点奇怪,因为noisolation基本上控制着为测试实例创建单独的沙箱,但可能需要为ms-test使用“动态”和非硬编码配置。
因此,总之,不要使用noisolation-flag,一切都可以工作。
https://stackoverflow.com/questions/32901730
复制相似问题