Welcome to mirror list, hosted at ThFree Co, Russian Federation.

XmlTestListener.cs « GuiUnit « framework « src - github.com/mono/guiunit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a1954e7f6663cb5dab3b04eb3c288f3c701e74b8 (plain)
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 {
			}
		}
	}
}