这是我的full code 以下是我的测试代码:
[UnityTest]
public IEnumerator NewPlayModeTest1WithEnumeratorPasses()
{
// Use the Assert class to test conditions.
// yield to skip a frame
var c = GameObject.Find("Cube");
c.transform.Translate(new Vector3(100, 100, 100));
yield return new WaitForSeconds(5);
Assert.True(true);
}
我希望在统一测试中移动gameobject,但是当我运行测试时,没有任何事情发生
并提出以下错误:
NullReferenceException: Object reference not set to an instance of an object
NewPlayModeTest+<NewPlayModeTest1WithEnumeratorPasses>c__Iterator0.MoveNext () (at Assets/Script/NewPlayModeTest.cs:22)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /home/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
所以如何在统一测试中移动对象
答案 0 :(得分:-4)
我发现当我运行测试脚本时,统一编辑器将创建一个新的测试场景。所以在新的场景中,我的旧场景游戏对象无法找到。
我找到了解决方案。从旧场景中,将对象拖动到文件资源管理器,它将初始化obj.prefab。然后在测试脚本中,加载此预制件进行测试。