SpecFlow записывает свой вывод в консоль следующим образом:
Given the "TestOperator" user is logged in
-> done: WebUserSteps.GivenTheUserIsLoggedIn("TestOperator", "") (9.5s)
Как мы можем заставить его использовать NLog для настройки, куда он должен писать?
При этом:
public class CustomListener : ITraceListener
{
private Logger Log = LogManager.GetLogger("SPECFLOW");
public void WriteTestOutput(string message)
{
Log.Trace(message);
}
public void WriteToolOutput(string message)
{
Log.Trace(message);
}
}
И
[Binding]
public class ScenarioContextInitializer
{
private readonly IObjectContainer _container;
public ScenarioContextInitializer(ScenarioContext scenarioContext)
{
_container = (scenarioContext ?? throw new ArgumentNullException(nameof(scenarioContext))).ScenarioContainer;
}
[Before]
protected void Load()
{
_container.RegisterTypeAs<CustomListener, ITraceListener>();
}
}
Не сработало.Я знаю, что есть возможность добавлять плагины , но это кажется слишком сложным.
Также мы используем ObjectivityLtd Test.Automation extensions.
Работает через xunit-тесты, сгенерированные SpecFlow.xUnit