Настройка / удаление не вызывается в 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;
}