Установка / удаление не вызывается в Unity Test Runner и тест заблокирован - PullRequest
0 голосов
/ 06 ноября 2018

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

Я установил 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 показывает, что тесты были запущены, но затем ни один из реальных тестов в наборе не прошел или не прошел:

enter image description here

1 Ответ

0 голосов
/ 02 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...