Specflow 在 AfterTestRun 中丢失 log4net appender
Specflow loses log4net appenders in AfterTestRun
我想记录我的 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 中也保留附加程序和日志配置?或者为什么会丢失?它也会影响其他静态成员吗?
As most of the unit test runners do not provide a hook for executing logic once the tests have been executed, the [AfterTestRun]
event is triggered by the test assembly unload event.
卸载测试程序集时,加载的配置也会随之消失。如果要用这种方式登录,需要重新加载配置。
我想记录我的 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 中也保留附加程序和日志配置?或者为什么会丢失?它也会影响其他静态成员吗?
As most of the unit test runners do not provide a hook for executing logic once the tests have been executed, the
[AfterTestRun]
event is triggered by the test assembly unload event.
卸载测试程序集时,加载的配置也会随之消失。如果要用这种方式登录,需要重新加载配置。