docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class UnityOneTimeTearDownAttribute

    The UnityOneTimeTearDown and UnityOneTimeSetUpAttribute 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.

    Inheritance
    object
    Attribute
    NUnitAttribute
    UnityOneTimeTearDownAttribute
    Inherited Members
    Attribute.Equals(object)
    Attribute.GetCustomAttribute(Assembly, Type)
    Attribute.GetCustomAttribute(Assembly, Type, bool)
    Attribute.GetCustomAttribute(MemberInfo, Type)
    Attribute.GetCustomAttribute(MemberInfo, Type, bool)
    Attribute.GetCustomAttribute(Module, Type)
    Attribute.GetCustomAttribute(Module, Type, bool)
    Attribute.GetCustomAttribute(ParameterInfo, Type)
    Attribute.GetCustomAttribute(ParameterInfo, Type, bool)
    Attribute.GetCustomAttributes(Assembly)
    Attribute.GetCustomAttributes(Assembly, bool)
    Attribute.GetCustomAttributes(Assembly, Type)
    Attribute.GetCustomAttributes(Assembly, Type, bool)
    Attribute.GetCustomAttributes(MemberInfo)
    Attribute.GetCustomAttributes(MemberInfo, bool)
    Attribute.GetCustomAttributes(MemberInfo, Type)
    Attribute.GetCustomAttributes(MemberInfo, Type, bool)
    Attribute.GetCustomAttributes(Module)
    Attribute.GetCustomAttributes(Module, bool)
    Attribute.GetCustomAttributes(Module, Type)
    Attribute.GetCustomAttributes(Module, Type, bool)
    Attribute.GetCustomAttributes(ParameterInfo)
    Attribute.GetCustomAttributes(ParameterInfo, bool)
    Attribute.GetCustomAttributes(ParameterInfo, Type)
    Attribute.GetCustomAttributes(ParameterInfo, Type, bool)
    Attribute.GetHashCode()
    Attribute.IsDefaultAttribute()
    Attribute.IsDefined(Assembly, Type)
    Attribute.IsDefined(Assembly, Type, bool)
    Attribute.IsDefined(MemberInfo, Type)
    Attribute.IsDefined(MemberInfo, Type, bool)
    Attribute.IsDefined(Module, Type)
    Attribute.IsDefined(Module, Type, bool)
    Attribute.IsDefined(ParameterInfo, Type)
    Attribute.IsDefined(ParameterInfo, Type, bool)
    Attribute.Match(object)
    Attribute.TypeId
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: UnityEngine.TestTools
    Assembly: UnityEngine.TestRunner.dll
    Syntax
    [AttributeUsage(AttributeTargets.Method)]
    public class UnityOneTimeTearDownAttribute : 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"); } }

    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)