C# MSTest失败:未能找到配置节';log4net';在应用程序中';配置文件
这是我的设置:C# MSTest失败:未能找到配置节';log4net';在应用程序中';配置文件,c#,unit-testing,log4net,mstest,C#,Unit Testing,Log4net,Mstest,这是我的设置: / 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项目的功能。
/
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
目录中
当我从VisualStudio(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
旁边的配置文件?这有什么意义?我想看看这个问题和答案:
它指出您应该创建一个测试运行配置,其中包括.config作为部署项
还要检查所使用的配置是否正确;查找活动配置文件的方法:
// Get the user-config:
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath
// Simple approach
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile? Is it the correct .config
通过使用@florianpeschka检查几件事情,我们认为问题在于noisolation
-标志。这有点奇怪,因为noisolation基本上控制着为测试实例创建单独的沙盒,但是可能需要创建单独的进程来为ms测试使用“动态”和非硬编码配置
因此,简而言之,不要使用noisolation
-标志,一切正常。这似乎无法解决根本问题。config
文件已正确部署到TestResults/Out/
文件夹中,请参阅我的问题。文件就在那里,只是MSTest不知何故没有找到它…什么是AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
?它是正确的.config
-文件吗?我应该如何找到它?我可以调试到MSTestExecution中吗?也许可以删除log4net(使其运行)并将变量写入文件?这很有趣。。。我已将输出添加到问题中。如果从生成文件夹中运行mstest,输出是否会更改?(即工作目录不同)@flindeberg Nop,无论工作目录是什么,都会加载相同的配置文件。您是否可以创建一个我可以查看的最小工作示例?我无法重新创建您的场景=/(假设.config作为部署项是部署的一部分)@flindeberg嗯。。。显然我也不能。我现在试着用两个小时创建一个MWE,但不知何故,当我从头开始时,它就起作用了。这仍然是信息;这意味着除了我在这里列出的之外,一定还有其他原因导致了这个问题……奇怪的是,noisolation
基本上控制着为测试实例创建单独的沙盒,但是可能需要创建单独的进程来为ms测试使用“动态”和非硬编码配置。