background image

Junit 讲义

1JUnit 的定义
=========
 

JUnit is an open source Java testing framework used to write 

and run repeatable tests。

说白了,

JUnit 是一个集成测试工具,能实现测试的自动化。 

这里说的是单元测试:属于软件工程里的白盒测试,也就是测试某个类

的某个方法的功能。

2JUnit 的测试思想
============

如果你要写一段代码:

 

先用

 junit 写测试,然后再写代码 

写完代码,运行测试,测试失败

 

修改代码,运行测试,直到测试成功

 

XP 中推崇的 test first design 就是基于以上技术。
不过,似乎不可行。以下面的

HelloWorldTest 为例,如果没有

HelloWorld.class 存在,则编译到 HelloWorld world = new HelloWorld();
时就会报错。

这不是与

“先写测试,后写代码”的思想相左吗?

3先写测试,再写代码的好处
================

       a)从技术上强制你先考虑一个类的功能,也就是这个类提供给外部的接口,
而不至于太早陷入它的细节。这是面向对象提倡的一种设计原则。
 

b)好的测试其实就是一个好的文档。这个类使用者往往可以通过查看这个类

的测试代码了解它的功能。特别的,如果你拿到别人的一个程序,对他写测试是
最好的了解这个程序的功能的方法。

 xp 的原则是 make it simple,不是很推

荐另外写文档,因为项目在开发过程中往往处于变动中,如果在早期写文档,
以后代码变动后还得同步文档,多了一个工作,而且由于项目时间紧往往文档
写的不全或与代码不一致,与其这样,不如不写。而如果在项目结束后再写文档
开发人员往往已经忘记当时写代码时的种种考虑,况且有下一个项目的压力,
管理人员也不愿意再为旧的项目写文档。导致以后维护的问题。

 
c)没有人能保证需求不变动,以往项目往往对需求的变动大为头疼,害怕

这个改动会带来其他地方的错误。为此,除了设计好的结构以分割项目外(松耦
合),但如果有了测试,并已经建立了一个好的测试框架,对于需求的变动,
修改完代码后,只要重新运行测试代码,如果测试通过,也就保证了修改的成
功,如果测试中出现错误,也会马上发现错在哪里。修改相应的部分,再运行测
试,直至测试完全通过。