49 lines
1.6 KiB
C#
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 |