Specflow在AfterTestRun中丢失了log4net appender

时间:2017-02-07 15:17:48

标签: c# log4net specflow

我想记录我的Specflow输出并进一步使用log4net登录到单个文件。 日志附加程序通过app.config进行配置,并在优先级为0的BeforeTestRun中加载。之后我可以登录文件和 LogManager.GetRepository()。GetAppenders()包含所有3个appender

一旦到达AfterTestRun, LogManager.GetRepository()。GetAppenders()就包含0个appender。

[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中保留appender和日志配置?或者为什么会丢失?它对其他静态成员也有影响吗?

1 个答案:

答案 0 :(得分:2)

From the documentation

  

由于大多数单元测试运行程序在执行测试后都没有提供执行逻辑的挂钩,因此测试程序集卸载事件会触发[AfterTestRun]事件。

当测试组件卸载时,加载的配置随之消失。如果要登录此方法,则必须再次加载配置。

相关问题