playtest-unity/playtest/Library/PackageCache/com.unity.ide.rider@3.0.21/Rider/Editor/UnitTesting/SyncTestRunCallback.cs

49 lines
1.6 KiB
C#

#if TEST_FRAMEWORK
using NUnit.Framework.Interfaces;
using Packages.Rider.Editor.UnitTesting;
using UnityEngine.TestRunner;
[assembly: TestRunCallback(typeof(SyncTestRunCallback))]
namespace Packages.Rider.Editor.UnitTesting
{
internal class SyncTestRunCallback : ITestRunCallback
{
public void RunStarted(ITest testsToRun)
{
}
public void RunFinished(ITestResult testResults)
{
SyncTestRunEventsHandler.instance.OnRunFinished();
}
public void TestStarted(ITest test)
{
if (!test.IsSuite)
SyncTestRunEventsHandler.instance.OnTestStarted(GenerateId(test));
}
public void TestFinished(ITestResult result)
{
if (!result.Test.IsSuite)
SyncTestRunEventsHandler.instance.OnTestFinished();
}
// https://jetbrains.team/p/net/code/dotnet-libs/files/f04cde7d1dd70ee13bf5532e30f929b9b5ed08a4/ReSharperTestRunner/src/Adapters/TestRunner.Adapters.NUnit3/RemoteTaskDepot.cs?tab=source&line=129
private static string GenerateId(ITest node)
{
// ES: Parameterized tests defined in a parametrized test fixture, though
// constructed for a particular test fixture with the given parameter, have identical fullname that does
// not include parameters of parent testfixture (name of the without parameters is used instead).
// This leads to 'Test with {id} id is already running' message.
var typeName = node.GetType().Name;
if (typeName == "ParameterizedMethod" ||
typeName == "GenericMethod")
return $"{node.Parent.FullName}.{node.Name}";
return node.FullName;
}
}
}
#endif