首页 > 解决方案 > Unity testrunner 在播放模式下运行 [Test]s 但不是 [UnityTests]

问题描述

我为 PlayMode 测试设置了我的测试环境。

标有[Test]工作的测试很好,例如,如果我的代码如下所示:

using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;

namespace Tests
{
    public class WinTestSuite
    {
        [Test]
        public void WinTestSuiteDummy()
        {
            Assert.IsTrue(false);
        }
    }
}

...然后运行所有测试,Test Runner 输出如下所示:

运行良好

(如预期)

不过,标记的测试[UnityTest]似乎无需运行即可自动通过。如果我编辑我的测试套件看起来像这样:

using System.Collections;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;

namespace Tests
{
    public class WinTestSuite
    {
        [UnityTest]
        public IEnumerable WinTestSuiteDummy()
        {
            Debug.Log("Hello world");
            yield return null;
            Assert.IsTrue(false);
        }
    }
}

我看到的输出是:

糟糕的运行

看起来它甚至没有运行(看不到Hello world任何地方),但我得到了及格分数。我究竟做错了什么?

标签: c#unity3dunity-test-tools

解决方案


解决方案:将IEnumerablewith替换IEnumerator为标记方法中的返回类型[UnityTest](非常感谢Nadav Etinzon指出)。现在一切都按预期运行。对我来说,为什么跑步者没有抱怨类型不匹配,而是选择假装一切运行顺利……我很好奇是否有人知道答案:)


推荐阅读