代码之家  ›  专栏  ›  技术社区  ›  Aggressor

Unity Test Runner中未调用Setup/Teardown&测试被阻止

  •  1
  • Aggressor  · 技术社区  · 7 年前

    我在google上搜索过,没有发现其他人有这个问题,所以可能只有我一个人。

    我用Playmode单元测试套件设置了一个Unity测试运行器。

    但是,如果我尝试运行在套装中有[Setup]或[Teardown]的测试,这些测试根本不会运行(当然,在单击run之后)。我只是得到一个灰色的圆圈,没有日志。它真的不跑了。

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

    下面是一些示例代码,这些代码可以工作并通过/运行测试:

    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 回复  |  直到 7 年前
        1
  •  1
  •   Aggressor    7 年前

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

    推荐文章