在Unity Test Runner中未调用设置/拆卸/测试被阻止

时间:2018-11-06 00:56:15

标签: c# unit-testing unity3d test-runner

我在Google周围搜索,没有其他人遇到这个问题,所以也许只有我一个人。

我设置了带有Playmode单元测试套件的Unity Test Runner。

但是,如果我尝试运行套装中具有[设置]或[拆卸]的测试,则这些测试根本不会运行(当然,请单击“运行”后)。我只有一个灰色圆圈,没有日志。它实际上没有运行。

如果我删除属性并手动调用方法,则一切正常。

您有什么建议,为什么[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上的绿色复选标记显示测试已运行,但是套件中的任何实际测试均未通过或失败:

enter image description here

1 个答案:

答案 0 :(得分:0)

他们需要公开,错误尚不清楚