Unity 单元测试(NUnit,UnityTestTools)
在软件开发中单元测试是非常重要的一个环节, =。=盘子脸去了几家公司都没有单元测试这个概念. 我们的系统虽然从代码看上是分离的, 在多数情况下都需要依赖于其他模块来运行.(单元测试部分内容教我解决这个问题.) 虽然学习了单元测试,但我相信实际过程中使用不到了. 接下来我稍微介绍下Unity如何进行单元测试.(推荐书籍”单元测试的艺术第二版”)
为什么要使用单元测试:
1. 我们可以从单元测试入口-> 我们编写的游戏模块 (而不是直接在Unity运行进入我们的模块)
2. 在一个地方统一编写单元测试, 造成测试代码不会分散
3. 还有很多很多优点,(使用单元测试很可能造成项目进度延后)
测试框架:
1. C# NUnit 非常不错的框架(需要在visual studio下载两个插件)
Templates 是创建项目的一个模版,安装之后可以在visual studio中创建测试项目了
Test Adapter 是调试窗口
1. UnityTestTools(框架已经对Unity窗口进行扩展,测试就直接在Unity窗口进行即可(大同小异而已)),AssetStore中可以下到
开始介绍NUnit框架基本使用:
首先我们创建一个控制台程序叫单元测试项目,接着创建NUnit测试项目(叫NUnit.Test1)
我们制作一个文件后缀名验证模块,其中一个FileVerify验证后缀名是否合法(txt). 接下来在控制台项目中创建一个FileVerify类里面有一个
IsFileNameEndTxt方法验证字符串是否以txt结尾,是返回true,不是返回false
public class FileVerify { //验证文件后后缀明是不是txt public bool IsFileNameEndTxt(string fileName) { if(fileName.EndsWith(".txt")) return true; else return false; } }
接下来看下我们的NUnit项目,他已经帮我们创建一个类(TestClass),里面已经有一个方法TestMethod().现在我们不需要写任何代码,点击菜单栏-测试->窗口->测试资源管理器, 如下图:
点击全部运行,TestMethod就测试成功了.
接下来我们在TestMethod写入测试FileVerify.IsFileNameEndTxt()方法的单元测试, 我们首先想到传入1.txt 和 txt.两个字符串.你的项目要创建
FileVerify类必须NUnit项目引入控制台项目
[TestFixture] public class TestClass { [Test] public void TestMethod() { FileVerify f = new FileVerify(); bool isResult = f.IsFileNameEndTxt("1.txt"); Assert.IsTrue(isResult); isResult = f.IsFileNameEndTxt("txt."); Assert.IsTrue(isResult,"这里报错了"); } }
我们在运行测试(这里一定会失败啦,因为”txt.”返回的是false), 遇到了Asset.IsTure(false) 抛出异常
单元测试如何调试?
选中单个测试-> 调试选中测试
到这里你已经学会了如何进行一个单元测试啦!()
==============================================================================