Настройка / удаление не вызывается в Unity Test Runner и тест заблокирован

Я погуглил и не вижу, чтобы кто-то еще имел эту проблему, так что, возможно, это только я.

Я установил Unity Test Runner с набором тестовых модулей Playmode.

Тем не менее, если я пытаюсь запустить тесты, которые имеют [Setup] или [Teardown] в костюме, тесты вообще не запускаются (после нажатия Run, конечно). Я просто получаю серый круг и без бревна. Это буквально не работает.

Если я удаляю атрибуты и вызываю методы вручную, все работает.

Есть ли у вас какие-либо предположения, почему атрибуты [Setup]/[Teardown] вызывают такое странное поведение?

Вот пример кода, который работает и имеет прохождение / выполнение тестов:

public class PlayModeUnitTests
{
    Game game;

    void Setup()
    {
        GameObject gameGameObject = MonoBehaviour.Instantiate(Resources.Load<GameObject>("Prefabs/Game"));
        game = gameGameObject.GetComponent<Game>();
    }

    void Teardown()
    {
        Object.Destroy(game.gameObject);
    }

    [UnityTest]
    public IEnumerator MoveDown()
    {
        Setup();
        GameObject obj = game.SpawnObj();
        float initialYPos = obj.transform.position.y;
        yield return new WaitForSeconds(0.1f);

        Assert.Less(obj.transform.position.y, initialYPos);
    }
}

А вот пример кода, который приводит к тому, что тесты фактически не запускаются и даже не выдают сообщение об ошибке:

 public class PlayModeUnitTests
    {
        Game game;
        [SetUp]
        void Setup()
        {
            GameObject gameGameObject = MonoBehaviour.Instantiate(Resources.Load<GameObject>("Prefabs/Game"));
            game = gameGameObject.GetComponent<Game>();
        }

        [TearDown]
        void Teardown()
        {
            Object.Destroy(game.gameObject);
        }

        [UnityTest]
        public IEnumerator MoveDown()
        {
            GameObject obj = game.SpawnObj();
            float initialYPos = obj.transform.position.y;
            yield return new WaitForSeconds(0.1f);

            Assert.Less(obj.transform.position.y, initialYPos);
        }
    }

Как вы можете видеть, зеленая галочка на.dll показывает, что тесты были запущены, но затем ни один из реальных тестов в наборе не прошел или не прошел:

2 ответа

Они должны были быть публичными, ошибка просто не ясна

Моя проблема заключалась в том, что при использовании [UnityTest]разборка должна иметь следующее:

  • быть [UnityTeardown]
  • быть public
  • возвращаться IEnumerator
      [UnityTearDown]
public IEnumerator Teardown()
{
  service.Dispose();
  yield return null;
}

Другие вопросы по тегам