包含此页的版本:
不含此页的版本:
OuterUnityTestAction是测试之外的包装器,它允许任何具有此属性的测试在测试之前和之后运行代码。此方法允许以与UnityTest.该属性必须继承NUnit属性和实现IOuterUnityTestAction.
using System.Collections;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using UnityEngine;
using UnityEngine.TestTools;
public class MyTestClass
{
[UnityTest, MyOuterActionAttribute]
public IEnumerator MyTestInsidePlaymode()
{
Assert.IsTrue(Application.isPlaying);
yield return null;
}
}
public class MyOuterActionAttribute : NUnitAttribute, IOuterUnityTestAction
{
public IEnumerator BeforeTest(ITest test)
{
yield return new EnterPlayMode();
}
public IEnumerator AfterTest(ITest test)
{
yield return new ExitPlayMode();
}
}
域重新加载时不会重新运行 Unity 外部测试作,但非 Unity作属性为:
using NUnit.Framework.Interfaces;
public class TestActionOnSuiteAttribute : NUnitAttribute, ITestAction
{
public void BeforeTest(ITest test)
{
Debug.Log("TestAction OnSuite BeforeTest");
}
public void AfterTest(ITest test)
{
}
public ActionTargets Targets { get { return ActionTargets.Suite; } }
}
public class TestActionOnTestAttribute : NUnitAttribute, ITestAction
{
public void BeforeTest(ITest test)
{
Debug.Log("TestAction OnTest BeforeTest");
}
public void AfterTest(ITest test)
{
Debug.Log("TestAction OnTest AfterTest");
}
public ActionTargets Targets { get { return ActionTargets.Test; } }
}
public class OuterTestAttribute : NUnitAttribute, IOuterUnityTestAction
{
public IEnumerator BeforeTest(ITest test)
{
Debug.Log("OuterTestAttribute BeforeTest");
yield return null;
}
public IEnumerator AfterTest(ITest test)
{
Debug.Log("OuterTestAttribute AfterTest");
yield return null;
}
}
[TestActionOnSuite]
public class ActionOrderTestBase
{
[Test, OuterTest, TestActionOnTest]
public void UnitTest()
{
Debug.Log("Test");
}
[UnityTest, OuterTest, TestActionOnTest]
public IEnumerator UnityTestWithDomainReload()
{
Log("Test part 1");
yield return new EnterPlayMode();
//Domain reload
yield return new ExitPlayMode();
Log("Test part 2");
}
}