Testing “为什么?”;返回新的WaitForEndOfFrame();永远不会以批处理模式返回?

Testing “为什么?”;返回新的WaitForEndOfFrame();永远不会以批处理模式返回?,testing,unity3d,integration-testing,Testing,Unity3d,Integration Testing,我正在尝试使用unity测试工具包编写集成测试 测试在编辑器中运行时没有问题(在播放模式下) 但是当我尝试从命令行(在批处理模式下)运行集成测试时,WaitForEndOfFramecoroutine永远不会返回 这是一个已知的问题还是我遗漏了什么 我正在使用以下命令运行测试: /Applications/Unity-5.3.1-f1/Unity.app/Contents/MacOS/Unity \ -batchmode \ -nographics \ -logfile \ -

我正在尝试使用unity测试工具包编写集成测试

测试在编辑器中运行时没有问题(在播放模式下)

但是当我尝试从命令行(在批处理模式下)运行集成测试时,WaitForEndOfFramecoroutine永远不会返回

这是一个已知的问题还是我遗漏了什么

我正在使用以下命令运行测试:

 /Applications/Unity-5.3.1-f1/Unity.app/Contents/MacOS/Unity \
  -batchmode \
  -nographics \
  -logfile \
  -projectPath $(pwd) \
  -executeMethod UnityTest.Batch.RunIntegrationTests \
  -testscenes=TestScene \
  -resultsFileDirectory=$(pwd)
如果您使用的是C#,它将不起作用。如果你使用JS,它会。对于C#您需要使用Coroutine,对于这一点,IEnumerable


与对Time WaitForSeconds等的让步调用相同。它们不支持对C#的让步,因为Mono Unity3d只在主线程上运行,不能让步,因为您将得到的应用程序没有响应。另一方面,当JS工作时,它并不是完全停止调用,而是停止自己的脚本。这就是为什么在C#中添加invoke方法来延迟的原因。

Unity在批处理模式下不更新编辑器中的帧。从他们的:

  • 在使用-batchmode运行编辑器时,不能使用WaitForEndOfFrame,因为系统喜欢动画、物理和时间线 可能无法在编辑器中正常工作。这是因为Unity当前在使用WaitForEndOfFrame时不会更新这些系统

问题是为什么
WaitForEndOfFrame
在批处理模式下不能按预期工作。这个答案根本不能回答这个问题。看起来像是一个bug:这里有一些代码(据推测)修复了集成测试使用的问题:啊-现在文档中有一些地方。这只是说明它在批处理模式下不工作。现在不能用谷歌搜索,但记得最近读过。