单元测试框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
修正编译错误
有问题
调试, 肉眼观察
可交付的代码
没问题(自认为)
测试驱动开发过程
编写测试
重构代码 运行测试, 使其通过
写点代码
编译
可
交
付
修正编译错误
代
码
运行测试, 看它失败
测试哲学
不存在不能进行 自动测试的程序。
[Kent Beck]
测试驱动开发技术
单元测试技术
– 对代码片断外部行为的验证 – 单元测试应该是交付代码的必不可少的一部分。
技术特质
开放 坦诚 勇气 批评和自我批评 快乐 沟通 团队协作
软件开发的现实
随着时间的改变,软件也会改变。 每个人都愿意去维护整齐优美的代码。 但是: 如何应付软件随时间的改变而改变? 如何编写健壮优美的代码?
没有进行单元测试的软件开发过程
Байду номын сангаас
编写代码
编译
xUnit测试家族
Junit Nunit HtmlUnit DbUnit JsUnit …..
Demo-猜数字
关键点分析:
– 随机生成不重复的4位数字 – 根据游戏者输入的数字,验证并返回结果
技术和工具
– Winform – C# – Nunit独立版
大话西游之单元测试[转载]
“我知道这个项目bug很多,无法按时完成,即 使老板把我炒了也是应该的。曾经有一个做单 元测试的机会放在我面前,我没有珍惜,等到 后来项目雪崩了才后悔。如果上天能给我再来 一次机会的话,我会对老板说:我要做单元测 试!如果一定要在单元测试上加个日期,我希 望是一直。"
可怜的老兄,我早该告诉他应该先测试,再编码.
执行SetUp 执行测试方法2 执行TearDown ….. 执行SetUp 执行测试方法n 执行TearDown
JUnit
assertTrue(String message, Boolean test) assertFalse(String message, Boolean test) assertNull(String message, Object object) assertNotNull(String message, Object object) assertEquals(String message, Object expected,
Object actual) (uses equals method) assertSame(String message, Object expected,
Object actual) (uses == operator) assertNotSame(String message, Object expected,
参考资料-书
测试驱动开发实践指南
– 从头到尾讲解一个测试驱动开发的实际例子[java]
Pragmatic Unit Testing in C# with Nunit
– 实用程序员系列,短小精悍,简单易懂
Pragmatic Unit Testing in Java with Junit
– 实用程序员系列,短小精悍,简单易懂
Junit Recipes
– 全面讲解Junit的各类应用
重构-改善既有代码的设计 [Martin fowler]
– 第一本全面讲解重构技术的书,作者为OO界的大师Martin fowler
参考资料-在线网址
http://www.junit.org/index.htm http://open.ncsu.edu/se/tutorials/junit/ http://www.cs.umanitoba.ca/~eclipse/10-JUnit.pdf http://supportweb.cs.bham.ac.uk/documentation/tuto
Object actual
NUnit
Assert.AreEqual(Object o1, Object o2); Assert.AreNotEqual(Object o1, Object o2); Assert.AreSame(Object o1, Object o2); Assert.AreNotSame(Object o1, Object o2); Assert.IsTrue(bool condition); Assert.IsFalse(bool condition); Assert.IsNull(Object o); Assert.IsNotNull(Object o);
编写单元测试的十大理由
测试能减少增加新功能时的bug 测试是最好的程序说明文档 测试能降低改变代码的代价 测试能改善代码的设计 测试是重构成为可能 测试强制你去思考软件实现的细节 测试能加快开发进程 测试能减少编写代码的恐惧,带来自信 测试使你的每一片代码都建立的在扎实的基础之上。 可用于回归测试,提高代码的可维护性, 保证代码长期质量。
rials/docsystem/build/tutorials/junit/junit.pdf http://junit.sourceforge.net/javadoc/junit/framework/ http://www.xprogramming.com http://www.martinfowler.com http://www.nunit.org http://www.mockobjects.com
代码重构
– 不改变代码的外部行为而改变其内部结构使其更好理解,更 容易扩展的过程
单元测试是重构成功的关键。 重构准则:改变一小步,测试,然后再改变一小步,
测试……
单元测试框架
DotNet
– Nunit – TestDriven.Net – Nmock – Rhino Mock
Java
– Junit – Jmock – EasyMock
Demo-最简单的一个单元测试
Nunit的Attribute属性说明 [TestFixture] – 表明类 [Test] -- 表明此方法是一个单元测试方法 [Ignore] -- 略过一个测试
测试执行过程
执行SetUp 执行测试方法1 执行TearDown