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