我想记录我的Specflow输出,并进一步使用log4net登录到一个文件。日志附加程序通过app.config进行配置,并以优先级0加载到BeforeTestRun中。之后,我可以登录到文件中,并且LogManager.GetRepository()。GetAppenders()包含所有3个附加程序。
一旦到达AfterTestRun,LogManager.GetRepository()。GetAppenders()就会包含0个附加程序。
[BeginTestRun(0)]
public void beginTestRun(){
log4net.Config.XmlConfigurator.Configure();
//LogManager.GetRepository().GetAppenders() contains 3 appenders
}
[AfterTestScenario(MaxPriority)]
public void afterScenario(){
//LogManager.GetRepository().GetAppenders() contains 3 appenders
}
[AfterTestRun(0)]
public void afterTestRun(){
//LogManager.GetRepository().GetAppenders() contains 0 appenders
//does reinitiate all loggers, but configuration of object can get lost
log4net.Config.XmlConfigurator.Configure();
}
有没有办法在AfterTestRun中也保留追加程序和日志配置?还是为什么会丢失?它也影响到其他静态成员吗?
从文档中:
由于大多数单元测试运行器在执行完测试后都不提供执行逻辑的钩子,因此该
[AfterTestRun]
事件由测试程序集的unload事件触发。
当测试组件卸载时,加载的配置随之消失。如果要登录此方法,则必须再次加载配置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句