Class UnitySetUpAttribute
The UnitySetUp
and UnityTearDownAttribute attributes are identical to the standard SetUp
and TearDown
attributes, with the exception that they allow for IEditModeTestYieldInstruction. The UnitySetUp
and UnityTearDown
attributes expect a return type of IEnumerator.
Namespace: UnityEngine.TestTools
Assembly: solution.dll
Syntax
[AttributeUsage(AttributeTargets.Method)]
public class UnitySetUpAttribute : NUnitAttribute
Examples
public class SetUpTearDownExample
{
[UnitySetUp]
public IEnumerator SetUp()
{
yield return new EnterPlayMode();
}
[Test]
public void MyTest()
{
Debug.Log("This runs inside playmode");
}
[UnityTearDown]
public IEnumerator TearDown()
{
yield return new ExitPlayMode();
}
}
Base and Derived class example
public class BaseClass
{
[OneTimeSetUp]
public void OneTimeSetUp()
{
Debug.Log("OneTimeSetUp Base");
}
[SetUp]
public void SetUp()
{
Debug.Log("SetUp Base");
}
[UnitySetUp]
public IEnumerator UnitySetUp()
{
Debug.Log("UnitySetup Base");
yield return null;
}
[TearDown]
public void TearDown()
{
Debug.Log("TearDown Base");
}
[UnityTearDown]
public IEnumerator UnityTearDown()
{
Debug.Log("UnityTearDown Base");
yield return null;
}
}
public class DerivedClass : BaseClass
{
[OneTimeSetUp]
public new void OneTimeSetUp()
{
Debug.Log("OneTimeSetUp");
}
[SetUp]
public new void SetUp()
{
Debug.Log("SetUp");
}
[UnitySetUp]
public new IEnumerator UnitySetUp()
{
Debug.Log("UnitySetup");
yield return null;
}
[Test]
public void UnitTest()
{
Debug.Log("Test");
}
[UnityTest]
public IEnumerator UnityTest()
{
Debug.Log("UnityTest before yield");
yield return null;
Debug.Log("UnityTest after yield");
}
[TearDown]
public new void TearDown()
{
Debug.Log("TearDown");
}
[UnityTearDown]
public new IEnumerator UnityTearDown()
{
Debug.Log("UnityTearDown");
yield return null;
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
Debug.Log("OneTimeTearDown");
}
}
Domain reload example
public class BaseClass
{
[OneTimeSetUp]
public void OneTimeSetUp()
{
Debug.Log("OneTimeSetUp Base");
}
[SetUp]
public void SetUp()
{
Debug.Log("SetUp Base");
}
[UnitySetUp]
public IEnumerator UnitySetUp()
{
Debug.Log("UnitySetup Base");
yield return null;
}
[TearDown]
public void TearDown()
{
Debug.Log("TearDown Base");
}
[UnityTearDown]
public IEnumerator UnityTearDown()
{
Debug.Log("UnityTearDown Base");
yield return null;
}
}
public class DerivedClass : BaseClass
{
[OneTimeSetUp]
public new void OneTimeSetUp()
{
Debug.Log("OneTimeSetUp");
}
[SetUp]
public new void SetUp()
{
Debug.Log("SetUp");
}
[UnitySetUp]
public new IEnumerator UnitySetUp()
{
Debug.Log("UnitySetup");
yield return null;
}
[Test]
public void UnitTest()
{
Debug.Log("Test");
}
[UnityTest]
public IEnumerator UnityTest()
{
Debug.Log("UnityTest before yield");
yield return new EnterPlayMode();
//Domain reload happening
yield return new ExitPlayMode();
Debug.Log("UnityTest after yield");
}
[TearDown]
public new void TearDown()
{
Debug.Log("TearDown");
}
[UnityTearDown]
public new IEnumerator UnityTearDown()
{
Debug.Log("UnityTearDown");
yield return null;
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
Debug.Log("OneTimeTearDown");
}
}