如果脚本中记录了错误,则 PlayMode 测试默认停止

Posted

技术标签:

【中文标题】如果脚本中记录了错误,则 PlayMode 测试默认停止【英文标题】:PlayMode tests stopping by default if errors are logged in scripts 【发布时间】:2018-03-29 16:05:02 【问题描述】:

根据经验,如果脚本调用 Debug.LogError 时以编程方式创建任何错误日志,我可以看到 Unity 停止运行 PlayMode 测试。

这对我来说是个问题,因为我希望 PlayMode 测试仅在断言失败时停止。

如果记录了错误,有什么方法可以告诉 Unity 不要停止当前的 PlayMode 测试?

【问题讨论】:

【参考方案1】:

在控制台选项卡上禁用错误暂停。这应该可以防止 Debug.LogError 暂停您的游戏。


如果此测试未在编辑器中完成,则它将失败。为防止这种情况,请在 Debug.LogError 之后立即调用 LogAssert.Expect,以防止 Unity 在调用 Debug.LogError 时停止或测试失败。

Debug.LogError("Your Error");

LogAssert.Expect(LogType.Error, "Your Error");

编辑

Unity 2017 及更高版本中,您现在可以使用 LogAssert.ignoreFailingMessages 将其设置为 true 来完成此操作。对于旧版 Unity,您仍然可以使用上述答案。

LogAssert.ignoreFailingMessages = true;

【讨论】:

期待它有效,但这是唯一的方法吗?没有全局方法告诉 Unity 期待所有错误日志? 是的。根据doc,Thar 是唯一的方法 您可以轻松地为此编写一个包装器或函数,同时调用Debug.Log 然后LogAssert.Expect 2017.1起可以在全球范围内进行,见LogAssert-ignoreFailingMessages @Jethro 感谢您的提醒【参考方案2】:

要允许所有错误消息,您可以将 LogAssert.ignoreFailingMessages 设置为 true。

【讨论】:

以上是关于如果脚本中记录了错误,则 PlayMode 测试默认停止的主要内容,如果未能解决你的问题,请参考以下文章

All compiler errors have to be fixed before entering playmode

打印机 出现脚本错误怎么办

如何使用脚本或代码将错误动态记录到 JIRA

shell 测试URL 是否正常脚本

BASH 脚本使用输入和标准错误来长列表目录

检查模板中是不是存在变量,如果不存在则不会在记录器中导致错误