Created
October 30, 2019 09:43
-
-
Save extrawurst/cf91a196bb450ef743252bc731c3cd0b to your computer and use it in GitHub Desktop.
Unity TestRunnerApi to run UnitTests before each build
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEditor.Build; | |
using UnityEditor.Build.Reporting; | |
using UnityEngine; | |
using UnityEditor.TestTools.TestRunner.Api; | |
public class ResultCollector : ICallbacks | |
{ | |
public ITestResultAdaptor Result { get; private set; } | |
public void RunFinished(ITestResultAdaptor result) | |
{ | |
Result = result; | |
} | |
public void RunStarted(ITestAdaptor testsToRun) { } | |
public void TestFinished(ITestResultAdaptor result) { } | |
public void TestStarted(ITestAdaptor test) { } | |
} | |
public class RunTestsBeforeBuild : IPreprocessBuildWithReport | |
{ | |
public int callbackOrder => 0; | |
public void OnPreprocessBuild(BuildReport report) | |
{ | |
Debug.Log("run prebuild editmode tests"); | |
var result = new ResultCollector(); | |
var api = ScriptableObject.CreateInstance<TestRunnerApi>(); | |
api.RegisterCallbacks(result); | |
api.Execute(new ExecutionSettings | |
{ | |
runSynchronously = true, | |
filters = new[]{ new Filter{ | |
testMode = TestMode.EditMode | |
}} | |
}); | |
if (result.Result.FailCount > 0) | |
throw new BuildFailedException($"{result.Result.FailCount} tests failed"); | |
Debug.Log($"tests passed: {result.Result.PassCount}"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment