230 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			230 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using NUnit.Framework;
 | |
| 
 | |
| namespace UnityEngine.TestTools
 | |
| {
 | |
|     /// <summary>
 | |
|     /// The `UnityOneTimeTearDown` and <see cref="UnityOneTimeSetUpAttribute"/> attributes are identical to the standard `OneTimeSetUp` and `OneTimeTearDown` attributes, with the exception that they allow for <see cref="IEditModeTestYieldInstruction"/>. The `UnityOneTimeSetUp` and `UnityOneTimeTearDown` attributes expect a return type of [IEnumerator](https://docs.microsoft.com/en-us/dotnet/api/system.collections.ienumerator?view=netframework-4.8).
 | |
|     /// </summary>
 | |
|     /// <example>
 | |
|     /// <code>
 | |
|     /// <![CDATA[
 | |
|     /// 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();
 | |
|     ///     }
 | |
|     /// }
 | |
|     /// ]]>
 | |
|     /// </code>
 | |
|     /// <para>## Base and Derived class example</para>
 | |
|     /// <code>
 | |
|     /// <![CDATA[
 | |
|     /// 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");
 | |
|     ///    }
 | |
|     /// }
 | |
|     /// ]]>
 | |
|     /// </code>
 | |
|     /// <para>## Domain reload example</para>
 | |
|     /// <code>
 | |
|     /// <![CDATA[
 | |
|     /// 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");
 | |
|     ///    }
 | |
|     /// }
 | |
|     /// ]]>
 | |
|     /// </code>
 | |
|     /// </example>
 | |
|     [AttributeUsage(AttributeTargets.Method)]
 | |
|     public class UnityOneTimeTearDownAttribute : NUnitAttribute
 | |
|     {
 | |
|     }
 | |
| }
 |