可以使用 Unity Test Runner 为 Unity 编写单元测试。我希望在命令行中调用这些测试,以便将它们作为 Git 工作流程的一部分自动运行。
您可以通过命令行运行测试
Unity.exe -runTests -batchmode -projectPath ~/path -testPlatform PlayMode
这工作正常,但是 Unity 总是以 640 x 480 的分辨率运行我的测试,这不现实。我进行这些测试的主要动机也是为了测试在不同目标分辨率下的正确性,但这似乎不太可能实现。
与您自己的方式类似,但不是使用
SizeSelectionCallback
您认为需要预先配置相应分辨率的方式,而是直接通过SetCustomResolution
。这并不局限于每个项目中都必须预先配置分辨率,而且更加灵活,因为它允许将参数作为测试用例甚至 CI 端控制台参数传递!(参见
System.Environment.GetCommandLineArgs
)Reflection
此外,我通常更喜欢使用“组装桥”,而不是通过。Unity 将
internal
类型公开给特定命名的程序集,例如Unity.InternalAPIEditorBridge001
使用Unity.InternalAPIEditorBridge024
属性[InternalsVisibleTo]
。(参见源代码)只需简单地创建一个具有相应名称的程序集(定义),您就可以直接访问所有
UnityEditor
internal
类型和方法,这样Reflection
您就可以简单地使用理论上,你甚至可以将这个特殊的程序集和你的测试导出为
.unitypackage
(不要与包管理器混淆),然后将其作为CI的一部分导入到现有项目中(-importPackage <pathname>
),甚至不需要将测试本身放在你的原始项目中。但这当然只适用于在所有项目中可重复使用的非常通用的测试。似乎没有针对此的官方 Unity API,但是可以通过测试中的反射来实现(当然,在未来的 Unity 版本中存在中等程度的中断风险)。
此代码将切换 GameView 以使用
index
下拉菜单中给定的预配置分辨率。