93 lines
3.8 KiB
C#
93 lines
3.8 KiB
C#
using NUnit.Framework.Interfaces;
|
|
using System;
|
|
using System.Xml;
|
|
using UnityEngine;
|
|
using UnityEngine.TestRunner;
|
|
using UnityTestRunnerAction;
|
|
|
|
[assembly: TestRunCallback(typeof(MyTestRunCallback))]
|
|
|
|
namespace UnityTestRunnerAction
|
|
{
|
|
public class MyTestRunCallback : ITestRunCallback
|
|
{
|
|
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";
|
|
|
|
private ITest fullTest;
|
|
|
|
public void RunStarted(ITest testsToRun)
|
|
{
|
|
if (fullTest == null)
|
|
{
|
|
fullTest = testsToRun;
|
|
}
|
|
}
|
|
|
|
public void RunFinished(ITestResult testResults)
|
|
{
|
|
if (testResults.Test != fullTest)
|
|
{
|
|
return;
|
|
}
|
|
|
|
string[] commandLineArgs = Environment.GetCommandLineArgs();
|
|
string testResultsPath = commandLineArgs[Array.IndexOf(commandLineArgs, "-testResults") + 1];
|
|
using (var writer = XmlWriter.Create(testResultsPath, new XmlWriterSettings() { Indent = true }))
|
|
{
|
|
// Manually add the outer test-run node, because testResults.ToXml doesn't include it.
|
|
|
|
var testRunNode = new TNode(k_TestRunNode);
|
|
|
|
testRunNode.AddAttribute(k_Id, "2");
|
|
testRunNode.AddAttribute(k_Testcasecount, (testResults.PassCount + testResults.FailCount + testResults.SkipCount + testResults.InconclusiveCount).ToString());
|
|
testRunNode.AddAttribute(k_Result, testResults.ResultState.ToString());
|
|
testRunNode.AddAttribute(k_Total, (testResults.PassCount + testResults.FailCount + testResults.SkipCount + testResults.InconclusiveCount).ToString());
|
|
testRunNode.AddAttribute(k_Passed, testResults.PassCount.ToString());
|
|
testRunNode.AddAttribute(k_Failed, testResults.FailCount.ToString());
|
|
testRunNode.AddAttribute(k_Inconclusive, testResults.InconclusiveCount.ToString());
|
|
testRunNode.AddAttribute(k_Skipped, testResults.SkipCount.ToString());
|
|
testRunNode.AddAttribute(k_Asserts, testResults.AssertCount.ToString());
|
|
testRunNode.AddAttribute(k_EngineVersion, k_nUnitVersion);
|
|
testRunNode.AddAttribute(k_ClrVersion, Environment.Version.ToString());
|
|
testRunNode.AddAttribute(k_StartTime, testResults.StartTime.ToString(k_TimeFormat));
|
|
testRunNode.AddAttribute(k_EndTime, testResults.EndTime.ToString(k_TimeFormat));
|
|
testRunNode.AddAttribute(k_Duration, testResults.Duration.ToString());
|
|
|
|
var resultNode = testResults.ToXml(true);
|
|
testRunNode.ChildNodes.Add(resultNode);
|
|
|
|
testRunNode.WriteTo(writer);
|
|
writer.Flush();
|
|
}
|
|
|
|
Application.Quit(testResults.ResultState.Status == TestStatus.Failed ? 2 : 0);
|
|
}
|
|
|
|
public void TestStarted(ITest test)
|
|
{
|
|
}
|
|
|
|
public void TestFinished(ITestResult result)
|
|
{
|
|
}
|
|
}
|
|
}
|