123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using System;
- using System.IO;
- using System.Xml;
- using NUnit.Framework.Interfaces;
- using UnityEditor.TestTools.TestRunner.Api;
- using UnityEngine;
-
- namespace UnityEditor.TestTools.TestRunner.Api
- {
- internal class ResultsWriter
- {
- private const string k_nUnitVersion = "3.5.0.0";
-
- private const string k_TestRunNode = "test-run";
- private const string k_Id = "id";
- private const string k_Testcasecount = "testcasecount";
- private const string k_Result = "result";
- private const string k_Total = "total";
- private const string k_Passed = "passed";
- private const string k_Failed = "failed";
- private const string k_Inconclusive = "inconclusive";
- private const string k_Skipped = "skipped";
- private const string k_Asserts = "asserts";
- private const string k_EngineVersion = "engine-version";
- private const string k_ClrVersion = "clr-version";
- private const string k_StartTime = "start-time";
- private const string k_EndTime = "end-time";
- private const string k_Duration = "duration";
-
- private const string k_TimeFormat = "u";
-
- public void WriteResultToFile(ITestResultAdaptor result, string filePath)
- {
- Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Saving results to: {0}", filePath);
-
- try
- {
- if (!Directory.Exists(filePath))
- {
- CreateDirectory(filePath);
- }
-
- using (var fileStream = File.CreateText(filePath))
- {
- WriteResultToStream(result, fileStream);
- }
- }
- catch (Exception ex)
- {
- Debug.LogError("Saving result file failed.");
- Debug.LogException(ex);
- }
- }
-
- private void CreateDirectory(string filePath)
- {
- var driectoryPath = Path.GetDirectoryName(filePath);
- if (!String.IsNullOrEmpty(driectoryPath))
- {
- Directory.CreateDirectory(driectoryPath);
- }
- }
-
- public void WriteResultToStream(ITestResultAdaptor result, StreamWriter streamWriter, XmlWriterSettings settings = null)
- {
- settings = settings ?? new XmlWriterSettings();
- settings.Indent = true;
- settings.NewLineOnAttributes = false;
-
- using (var xmlWriter = XmlWriter.Create(streamWriter, settings))
- {
- WriteResultsToXml(result, xmlWriter);
- }
- }
-
- private void WriteResultsToXml(ITestResultAdaptor result, XmlWriter xmlWriter)
- {
- // XML format as specified at https://github.com/nunit/docs/wiki/Test-Result-XML-Format
-
- var testRunNode = new TNode(k_TestRunNode);
-
- testRunNode.AddAttribute(k_Id, "2");
- testRunNode.AddAttribute(k_Testcasecount, (result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount).ToString());
- testRunNode.AddAttribute(k_Result, result.ResultState);
- testRunNode.AddAttribute(k_Total, (result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount).ToString());
- testRunNode.AddAttribute(k_Passed, result.PassCount.ToString());
- testRunNode.AddAttribute(k_Failed, result.FailCount.ToString());
- testRunNode.AddAttribute(k_Inconclusive, result.InconclusiveCount.ToString());
- testRunNode.AddAttribute(k_Skipped, result.SkipCount.ToString());
- testRunNode.AddAttribute(k_Asserts, result.AssertCount.ToString());
- testRunNode.AddAttribute(k_EngineVersion, k_nUnitVersion);
- testRunNode.AddAttribute(k_ClrVersion, Environment.Version.ToString());
- testRunNode.AddAttribute(k_StartTime, result.StartTime.ToString(k_TimeFormat));
- testRunNode.AddAttribute(k_EndTime, result.EndTime.ToString(k_TimeFormat));
- testRunNode.AddAttribute(k_Duration, result.Duration.ToString());
-
- var resultNode = result.ToXml();
- testRunNode.ChildNodes.Add(resultNode);
-
- testRunNode.WriteTo(xmlWriter);
- }
- }
- }
|