Unity NUnit缺失

Unity,乃至C#,都需要编写单元测试进行测试开发,又或者接收别人的开发包(比如说litjson),其中自带了NUnit.Framework的引用,却总是触发报错,说没有找到NUnit。

C#环境的NUnit

网上大多数的教程都是建议你使用NuGet包管理工具(无论是Visual Studio还是Rider),将NUnit安装到项目中,事实上,这个操作一般针对独立的C#项目(或者依赖.net环境的项目)使用。而对Unity3D无效。

Unity的Unit

通过官方页面:https://docs.unity3d.com/cn/2019.2/Manual/com.unity.ext.nunit.html

可以得知Unity官方封装了一个自定义版本的 NUnit 包,可与 Unity 结合使用。由 Unity Test Framework 使用,如果同时在Unity安装了NUnit和NuGet的NUit,会最终以Unity中的为准。

一个BUG

当我们打开Unity的Window – Package Manager的时候,会发现NUnit(名称为:Custom NUnit)已经安装了,实际上,并没有成功加载进入项目(这可能是一个BUG),导致实际上的NUnit并没办法使用。

需要手动点击Package Manager,左上角的‘+’号,然后选择 Add package from git URL,输入com.unity.ext.nunit手动添加NUnit到Unity中,此时会发现,成功安装了也没有任何变化,代码编辑器还是会报错。

最后需要关闭代码编辑器(刷新或者重启),即可发现NUnit环境不再报错,可以正常使用单元测试。

单元测试的内容如果较多,建议给编辑器打一个插件,如VS中可以按住啊个Assembly Explorer,在拓展中安装NUnit相关的插件,让单元测试更加直观处理。

 

PS:这个bug好坑啊,在这么犄角旮旯的地方有这个问题,搞得导出带NUnit的包全部都有这问题,别人接手之后一时半会又没法解决,得我主动去和他说解决办法。

能不能通过代码的方式,自动检查并且要求使用unpackage的用户安装NUnit,同理比如ecs等这些模块,也有这种问题的,能否有自动化处理方法,像写java项目maven那样。

分类: Unity3D

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注