PlayMode中的Unity3D测试运行程序未提供测试反馈

时间:2019-07-19 04:32:16

标签: unity3d testing

我刚刚开始使用Unity来构建一个灵活的恐龙游戏。因为我是按照TDD理念开发游戏的,所以我想对游戏进行测试。因此,这是我在Unity 2019.1.9.f2上未成功完成的尝试:

  1. 创建新的2D项目
  2. 在TestRunner中,选择PlayMode
  3. 创建PlayMode测试程序集文件夹
  4. 在当前文件夹中创建测试脚本

这是我要尝试的测试代码:

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中,一切都很好。

预先感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

所以……我终于能够使它起作用。在我看来,这可能是Unity中的一个错误,但是由于我不是Unity的超级用户,所以我不能自信地说。这就是我获得绿色/红色刻度的方法:完全巧合的是,我按下了播放按钮(玩游戏,所以与测试无关),然后按下暂停,然后再次按下暂停,然后按下步骤按钮。同时,在版本2018.4.3f1中,我能够运行PlayMode测试。然后,突然出现绿色/红色刻度。从那时起,我不再需要在游戏模式下运行我的游戏来获取有关测试的反馈……这有点奇怪。另外,不确定的断言没有正确跟踪:认为是通过,应该将其视为与EditorMode中的方式相同:不确定的橙色圆圈。