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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
using System;
using NUnit.Framework.Api;
using System.Xml.Linq;
using System.IO;
namespace GuiUnit
{
public class XmlTestListener : ITestListener
{
TextWriter Writer {
get; set;
}
public XmlTestListener (TextWriter writer)
{
Writer = writer;
}
public void TestStarted (ITest test)
{
if (test.HasChildren)
Write (new XElement ("suite-started", new XAttribute ("name", test.FullName)));
else
Write (new XElement ("test-started", new XAttribute ("name", test.FullName)));
}
public void TestFinished (ITestResult result)
{
var element = new XElement (result.Test.HasChildren ? "suite-finished" : "test-finished",
new XAttribute ("name", result.Test.FullName),
new XAttribute ("result", ToXmlString (result.ResultState)),
new XAttribute ("passed", result.PassCount),
new XAttribute ("failures", result.FailCount),
new XAttribute ("ignored", result.SkipCount),
new XAttribute ("inconclusive", result.InconclusiveCount)
);
if (!string.IsNullOrEmpty (result.Message))
element.Add (new XAttribute ("message", result.Message));
if (!string.IsNullOrEmpty (result.StackTrace))
element.Add (new XAttribute ("stack-trace", result.StackTrace));
Write (element);
}
public void TestOutput (TestOutput testOutput)
{
// Ignore
}
object ToXmlString (ResultState resultState)
{
if (resultState == ResultState.Success)
return "Success";
else if (resultState == ResultState.Inconclusive)
return "Inconclusive";
else if (resultState == ResultState.Ignored)
return "Ignored";
else
return "Failure";
}
void Write (XElement element)
{
try {
Writer.WriteLine (element.ToString ());
} catch {
}
}
}
}
|