我们最近将所有测试从NUnit移至MsTest。我们使用Spring.NET作为IOC容器和Log4Net。尽管在测试项目中有Log4net,但Log4Net无法找到它。任何想法可能是什么?
以下是我们收到的错误:
无法创建类的实例 OurCompany.DataAccess.DocumentManagement.Tests.EmailVerificationTokensAdapterTests.DeleteTests。 错误:Common.Logging.ConfigurationException:无法创建 Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter类型的实例。 可能的解释是缺少零arg和单arg NameValueCollection构造函数---> System.Reflection.TargetInvocationException:抛出了异常 通过调用的目标。 ---> Common.Logging.ConfigurationException:log4net配置文件 'log4net.xml'不存在。在 Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter..ctor(NameValueCollection中 属性) ---内部异常堆栈跟踪的结束---在System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo) 方法,Object [] args,ref SignatureStruct签名,RuntimeType 声明类型) System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo 方法,Object [] args,SignatureStruct签名,RuntimeType 声明类型) System.Reflection.RuntimeConstructorInfo.Invoke(的BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化) 在System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder,Object [] args,CultureInfo culture,Object [] 在System.Activator.CreateInstance(Type类型, BindingFlags bindingAttr,Binder binder,Object [] args,CultureInfo culture,Object [] activationAttributes)at Common.Logging.LogManager.BuildLoggerFactoryAdapter() ---内部异常堆栈跟踪结束---在Common.Logging.LogManager.BuildLoggerFactoryAdapter()at Common.Logging.LogManager.get_Adapter()at Spring.Testing.Microsoft.AbstractSpringContextTests..ctor()at Spring.Testing.Microsoft.AbstractTransactionalDbProviderSpringContextTests..ctor() 在 OurCompany.Tests.Common.Domain.SATransactionalIntegrationTestsBase..ctor() 在SATransactionalIntegrationTestsBase.cs中:第19行 OurCompany.DataAccess.DocumentManagement.Tests.EmailVerificationTokensAdapterTests.DeleteTests..ctor() 在DeleteTests.cs中:第20行
以下是我们在配置文件中的内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
<arg key="level" value="All" />
<arg key="showLogName" value="true" />
<arg key="showDataTime" value="true" />
<arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
</factoryAdapter>
</logging>
</common>
</configuration>
答案 0 :(得分:1)
以下是web.config
文件的片段,以下是步骤:
您可以在appSettings
中添加一个指向包含所有Log4net设置的外部配置文件的密钥:
<appSettings>
<add key="log4net.Config" value="Configs\develop.config" />
</appSettings>
这是外部配置文件:
<log4net>
<root>
<appender-ref ref="LogFileAppender" />
</root>
...
</log4net>
在您的代码中,您将设置XmlConfigurator
:
Config.XmlConfigurator.Configure(New FileInfo(ConfigurationManager.AppSettings("log4net.Config")))