我刚刚开始使用Unity来构建一个灵活的恐龙游戏。因为我是按照TDD理念开发游戏的,所以我想对游戏进行测试。因此,这是我在Unity 2019.1.9.f2上未成功完成的尝试:
这是我要尝试的测试代码:
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
namespace Tests
{
public class NewTestScript
{
// A Test behaves as an ordinary method
[Test]
public void NewTestScriptSimplePasses()
{
// Use the Assert class to test conditions
Assert.Inconclusive();
}
// A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use
// `yield return null;` to skip a frame.
[UnityTest]
public IEnumerator NewTestScriptWithEnumeratorPasses()
{
// Use the Assert class to test conditions.
// Use yield to skip a frame.
yield return null;
Assert.Inconclusive();
}
}
}
TestRunner不向我提供有关测试的任何反馈,除了它们“未运行”(绿色测试的数量=失败的测试的数量= 0,未运行的测试的数量= 2)。我试图重新启动Unity并再次运行测试,但没有成功。
缺乏反馈很有趣,因为如果我在这两个测试中都设置了一个断点,那么它们就会被击中,即测试正在运行。
与2018.4.3f1和2019.2.0b9相同。
现在,如果我用Unity 2018.1.9f2重现该实验,那么
NewTestScriptSimplePasses
完全不提供反馈NewTestScriptWithEnumeratorPasses
在控制台中触发“ InconclusiveException” 如果我将Assert.Inconclusive()
替换为Assert.IsTrue(false)
,则在第二次测试中会得到正确的反馈。如果我在第二项测试中致电Assert.IsTrue(true)
,则没有任何反馈。在所有情况下(包括我例外的情况),测试运行器上都没有显示绿色/红色刻度。
我在做什么错?在EditorMode中,一切都很好。
预先感谢您的帮助...
答案 0 :(得分:0)
所以……我终于能够使它起作用。在我看来,这可能是Unity中的一个错误,但是由于我不是Unity的超级用户,所以我不能自信地说。这就是我获得绿色/红色刻度的方法:完全巧合的是,我按下了播放按钮(玩游戏,所以与测试无关),然后按下暂停,然后再次按下暂停,然后按下步骤按钮。同时,在版本2018.4.3f1中,我能够运行PlayMode测试。然后,突然出现绿色/红色刻度。从那时起,我不再需要在游戏模式下运行我的游戏来获取有关测试的反馈……这有点奇怪。另外,不确定的断言没有正确跟踪:认为是通过,应该将其视为与EditorMode中的方式相同:不确定的橙色圆圈。