Unity3D 自动化测试
今天凌晨开始写这篇文章,想写这个主题很久了。相信每个资深开发都经历过每次公司要发版本之前都会有一堆bug闪现。真让人苦恼。很高兴 Unity technology 于 今年的六一儿童节更新了自动化测试的特性。这下终于不用再导入第三方自动化测试插件了。当然本章节会相对完整的快速概述其重要部分。如果你还想知道更多, Unity3D 已经提供了比较完善的文档。
适用于多种平台的自动化测试
TestRunner 适用于 Standalone, Android, or iOS 等平台。你可以在 Window > Test Runner 找到此项功能。
TestRunner 使用了Unity一体化的单元测试库。开源的.net语言库。更多的信息在 nunit 官网 和 NUnit GitHub文档.
UnityTestAttribute是Unity Test Runner的标准NUnit库的主要补充。 这是一种单元测试,允许您从测试中跳过框架(允许后台任务完成)。 当以编辑模式运行时,以Play模式运行并在EditorApplication.update回调循环中执行UnityTestAttribute作为协同程序。
已知问题和限制
以下是Unity Test Runner的已知问题和局限性:
WebGL和WSA平台不支持UnityTestAttribute。
测试运行者目前不支持AOT平台。
UnityTest不支持参数化测试(ValueSource除外)。
在命令行运行的平台播放器(例如Standalone,Android或iOS)中的自动测试目前不受支持。
在进行EditMode测试时,您必须创建一个文件夹名称编辑器来存储它们。
演示
Test 与 UnityTest 特性
在编辑器或者运行状态下都可以使用Test
1 | [ ] |
在运行状态下使用UnityTest
1 | [ ] |
在编辑器下使用
1 | [ ] |
UnityPlatform 特性
该特性可以帮助你区分测试的平台
1 | [ ] |
PrebuildSetup
如果您需要在测试开始之前执行任何额外的设置,请使用PrebuildSetupAttribute。 为此,请指定实现IPrebuildSetup接口的类类型。 如果您需要运行整个类的设置代码(例如,如果您想在测试开始之前执行一些代码,例如特定测试所需的资源准备或设置),请在类中实现IPrebuildSetup接口以进行测试。
只需要继承 IPrebuildSetup 接口 并且 标记 PrebuildSetup 特性就能提前配置单元测试所需数据或者资源。
1 | public class TestsWithPrebuildStep : IPrebuildSetup |
在进入播放模式或建立播放器之前,执行PrebuildSetup代码。 安装程序可以使用UnityEditor命名空间及其功能,但为了避免编译错误,您必须将其放置在“editor”文件夹中,或者必须使用#if UNITY_EDITOR指令进行保护。
LogAssert Log断言
如果记录除常规日志或警告消息之外的其他消息,则测试将失败。 使用LogAssert类在日志中预期消息,并防止测试失败。
如果预期的消息没有出现,测试也报告失败。 如果任何常规的日志或警告消息不出现,测试也失败。
1 | [ ] |
MonoBehaviourTest Mono脚本测试
MonoBehaviourTest是编写MonoBehaviour测试的包装,也是一个协程。 从UnityTest中产生MonoBehaviourTest来实例化指定的MonoBehaviour并等待它完成执行。 实现IMonoBehaviourTest接口来指示测试完成的时间。
1 | [ ] |
Tips
- 所有标记 UnityTestAttribute 特性的方法 测试的时候就像是协同程序一样被执行。
- 待续 。
本文标题:Unity3D 自动化测试
文章作者:Keyle
发布时间:2017-12-06
最后更新:2024-08-20
原始链接:https://vrast.cn/posts/1d932b40/
版权声明:©Keyle's Blog. 本站采用署名-非商业性使用-相同方式共享 4.0 国际进行许可