reference-custom-yield-instructions.md 2.4 KB

Custom yield instructions

By implementing this interface below, you can define custom yield instructions in Edit Mode tests.

IEditModeTestYieldInstruction

In an Edit Mode test, you can use IEditModeTestYieldInstruction interface to implement your own instruction. There are also a couple of commonly used implementations available:

Example

[UnityTest]

public IEnumerator PlayOnAwakeDisabled_DoesntPlayWhenEnteringPlayMode()

{
    var videoPlayer = PrefabUtility.InstantiatePrefab(m_VideoPlayerPrefab.GetComponent<VideoPlayer>()) as VideoPlayer;

    videoPlayer.playOnAwake = false;

    yield return new EnterPlayMode();

    var videoPlayerGO = GameObject.Find(m_VideoPlayerPrefab.name);

    Assert.IsFalse(videoPlayerGO.GetComponent<VideoPlayer>().isPlaying);

    yield return new ExitPlayMode();

    Object.DestroyImmediate(GameObject.Find(m_VideoPlayerPrefab.name));
}

Properties

Syntax Description
bool ExpectDomainReload Returns true if the instruction expects a domain reload to occur.
bool ExpectedPlaymodeState Returns true if the instruction expects the Unity Editor to be in Play Mode.

Methods

Syntax Description
IEnumerator Perform() Used to define multi-frame operations performed when instantiating a yield instruction.

EnterPlayMode

  • Implements IEditModeTestYieldInstruction. Creates a yield instruction to enter Play Mode.
  • When creating an Editor test that uses the UnityTest attribute, use this to trigger the Editor to enter Play Mode.
  • Throws an exception if the Editor is already in Play Mode or if there is a script compilation error.

ExitPlayMode

  • Implements IEditModeTestYieldInstruction. A new instance of the class is a yield instruction to exit Play Mode.
  • Throws an exception if the Editor is not in Play Mode.