2017-02-07 10 views
0

Я хочу записать мой вывод Specflow и продолжить вход в один файл с log4net. Прикладные программы журнала настраиваются через app.config и загружаются в PreTestRun с приоритетом 0. После этого я могу войти в файлы и LogManager.GetRepository(). GetAppenders() содержит все 3 приложения.Specflow теряет log4net-приставки в AfterTestRun

Как только он достигает 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? Или почему он потерян? Это влияет и на другие статические элементы?

ответ

2

From the documentation:

Поскольку большинство из модульных тестов бегунов не обеспечивает крюк для выполнения логики после того, как тесты были выполнены, то [AfterTestRun] события инициируются тестовой сборки разгрузочного события.

Когда тестовая сборка выгружается, загруженная конфигурация уходит с нее. Если вы хотите войти в этот метод, вам придется снова загрузить конфигурацию.