【发布时间】:2019-02-02 05:43:43
【问题描述】:
我用谷歌搜索过,我没有看到其他人有这个问题,所以也许只有我一个人。
我使用 Playmode 单元测试套件设置了 Unity Test Runner。
但是,如果我尝试运行套装中包含 [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 上的绿色复选标记表明测试已运行,但套件中的实际测试均未通过或失败:
【问题讨论】:
标签: c# unit-testing unity3d test-runner