-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathXUnitTraceListener.cs
48 lines (41 loc) · 1.53 KB
/
XUnitTraceListener.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using Reqnroll.BoDi;
using Reqnroll.Infrastructure;
using Reqnroll.Tracing;
using Xunit.Abstractions;
namespace Reqnroll.xUnit.ReqnrollPlugin
{
class XUnitTraceListener : AsyncTraceListener
{
private readonly Lazy<IContextManager> _contextManager;
public XUnitTraceListener(ITraceListenerQueue traceListenerQueue, IObjectContainer container) : base(traceListenerQueue, container)
{
_contextManager = new Lazy<IContextManager>(container.Resolve<IContextManager>);
}
private ITestOutputHelper GetTestOutputHelper()
{
var scenarioContext = _contextManager.Value.ScenarioContext;
if (scenarioContext == null)
return null;
if (!scenarioContext.ScenarioContainer.IsRegistered<ITestOutputHelper>())
return null;
return scenarioContext.ScenarioContainer.Resolve<ITestOutputHelper>();
}
public override void WriteTestOutput(string message)
{
var testOutputHelper = GetTestOutputHelper();
if (testOutputHelper != null)
testOutputHelper.WriteLine(message);
else
base.WriteTestOutput(message);
}
public override void WriteToolOutput(string message)
{
var testOutputHelper = GetTestOutputHelper();
if (testOutputHelper != null)
testOutputHelper.WriteLine("-> " + message);
else
base.WriteToolOutput(message);
}
}
}