OK,我们要测试的是UnityHelperTests下的所有测试用例,所以我们在左边选中它,然后单击“run”按钮!这样GUI就会自动帮我们跑里面的测试用例了,最终结果如下。
图4、成功的测试结果
可以看到,所有UnityHelperTests的测试均为绿色,进度条也为绿色,且指示Passed: 4,这说明我们所有断言成功,测试通过。
下面我们做点手脚,我在UnityHelper代码中取消了获取Container的单例性,现在再来运行测试看结果:
图5、失败的测试结果
可以看到,创建Container及创建Object是正常的,但Container的单例性被破坏。Container都不是单例的了,两个Object更不会是单例了。这时根据结果和右侧给出的错误信息,我们可以很快定位缺陷,并将之排除。
这个单元测试一但写好,开发团队中任何人员可以随时方便地跑它,这样我们就能在任何时刻知道UnityHelper是否工作正常,以帮助我们定位bug和排除缺陷。如果我们要做UnityHelper的重构,我们也可以使用它保证UnityHelper的行为正确。
总结
本文首先讨论了什么是单元测试,然后讨论了开发人员对单元测试的误解以及不愿做单元测试的原因。接着,我们讨论单元测试有哪些作用,最后用一个实际项目中的片段来说明单元测试的实践。限于篇幅,不能将单元测试及NUnit工具的方方面面讨论详尽,但是NUnit真是一个非常好上手的工具,你可以参考其文档和示例,或者参看Andrew Hunt所著的《Pragmatic Unit Testing in C# with NUnit》一书。
不论你是做何种开发,我相信,单元测试一定会让你受益匪浅。请相信,单元测试不是一件索然无味的工作,它同样充满了成就感和乐趣,每次看到鲜亮的绿色进度条,都是最爽的时刻。所以,希望看完本文的朋友能尽快拿起NUnit,开始你的单元测试实践。就从你的下一个项目、或下一个Class、甚至下一个 Function,开始你的单元测试之旅吧。
相关链接: