Class UnityOneTimeSetUpAttribute
The UnityOneTimeSetUp
and UnityOneTimeTearDownAttribute attributes are identical to the standard OneTimeSetUp
and OneTimeTearDown
attributes, with the exception that they allow for IEditModeTestYieldInstruction. The UnityOneTimeSetUp
and UnityOneTimeTearDown
attributes expect a return type of IEnumerator.
Inherited Members
Namespace: UnityEngine.TestTools
Assembly: UnityEngine.TestRunner.dll
Syntax
[AttributeUsage(AttributeTargets.Method)]
public class UnityOneTimeSetUpAttribute : NUnitAttribute
Examples
public class OneTimeSetUpTearDownExample
{
[UnityOneTimeSetUp]
public IEnumerator SetUp()
{
yield return new EnterPlayMode();
}
[Test]
public void MyTest()
{
Debug.Log("This runs inside playmode");
}
[UnityOneTimeTearDown]
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");
}
[UnityOneTimeSetUp]
public IEnumerator UnityOneTimeSetUp()
{
Debug.Log("UnityOneTimeSetUp Base");
yield return null;
}
[TearDown]
public void TearDown()
{
Debug.Log("TearDown Base");
}
[UnityOneTimeTearDown]
public IEnumerator UnityOneTimeTearDown()
{
Debug.Log("UnityOneTimeTearDown Base");
yield return null;
}
}
public class DerivedClass : BaseClass
{
[OneTimeSetUp]
public new void OneTimeSetUp()
{
Debug.Log("OneTimeSetUp");
}
[SetUp]
public new void SetUp()
{
Debug.Log("SetUp");
}
[UnityOneTimeSetUp]
public new IEnumerator UnityOneTimeSetUp()
{
Debug.Log("UnityOneTimeSetUp");
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");
}
[UnityOneTimeTearDown]
public new IEnumerator UnityOneTimeTearDown()
{
Debug.Log("UnityOneTimeTearDown");
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");
}
[UnityOneTimeSetUp]
public IEnumerator UnityOneTimeSetUp()
{
Debug.Log("UnityOneTimeSetUp Base");
yield return null;
}
[TearDown]
public void TearDown()
{
Debug.Log("TearDown Base");
}
[UnityOneTimeTearDown]
public IEnumerator UnityOneTimeTearDown()
{
Debug.Log("UnityOneTimeTearDown Base");
yield return null;
}
}
public class DerivedClass : BaseClass
{
[OneTimeSetUp]
public new void OneTimeSetUp()
{
Debug.Log("OneTimeSetUp");
}
[SetUp]
public new void SetUp()
{
Debug.Log("SetUp");
}
[UnityOneTimeSetUp]
public new IEnumerator UnityOneTimeSetUp()
{
Debug.Log("UnityOneTimeSetUp");
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");
}
[UnityOneTimeTearDown]
public new IEnumerator UnityOneTimeTearDown()
{
Debug.Log("UnityOneTimeTearDown");
yield return null;
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
Debug.Log("OneTimeTearDown");
}
}