Posted on 2006-12-02 16:23
码农cz 阅读(221)
评论(0) 编辑 收藏 所属分类:
OtherJava
JUnit是一个OpenSource的软件。
下载junit.jar。将这个jar文件加入你的CLASSPATH系统变量(获IDE CLASSPATH路径)就OK了。
编写测试类的基本步骤:
1> 扩展TestCase类;
2> 覆盖runTest()方法(可选);
3> 写一些testXXXXX()方法;
如果你要对一个或若干个的类执行多个测试,该怎么办?JUnit对此有特殊的解决办法。
如果需要在一个或若干个的类执行多个测试,这些类就成为了测试的context。
在JUnit中被称为Fixture。
protected void setUp() throws java.lang.Exception
覆盖setUp()方法,初始化所有测试的Fixture
protected void tearDown() throws java.lang.Exception
覆盖tearDown() 释放你在setUp()中分配的永久性资源,
当JUnit执行测试时,它在执行每个testXXXXX()方法前都调用setUp(),而在执行每个testXXXXX()方法后都调用tearDown()方法,由此保证了测试不会相互影响。
JUnit提供了三种界面来运行测试
[Text UI] junit.textui.TestRunner
[AWT UI] junit.awtui.TestRunner
[Swing UI] junit.swingui.TestRunner
界面很简单,键入类名-testClass。或在启动UI的时候键入类名:
c:>java junit.swingui.TestRunner testClass
下面是一些具体的编写测试代码的技巧或较好的实践方法:
1. 不要用TestCase的构造函数初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同的平台会按不同的顺序从Vector中取出测试方法。
3. 避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。简单的会滚就可以了。
4. 当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。
5. 将测试代码和工作代码放在一起,一边同步编译和更新。(使用Ant中有支持junit的task.)
6. 测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。
7. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。
8. 如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。
9. 尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。
10.测试要尽可能地小,执行速度快。
---------------------------------------------------
JUnit是单元测试工具,我的理解是用来测试单个模块功能的工具,非常适合测试比较独立的模块。
测试的用途是用来检查错误,我认为这个工具并不只是帮助编程时查错。对于传统的编程方式,一般都设计好了各个模块,通常模块测试一次就可以了,但是目前设计总是因为功能不断的增加和修改而改变,如果多次这样,程序的质量和bug修正将是一个繁重困难的工作。JUnit在这种情况下,可以大大的提高工作效率,只要在第一次写代码的时候额外编写测试代码,以后所有的修改都可以实现自动的测试。
同时因为自动测试的实现,XP编程方法才有了实现的可能。通过先写好测试代码,另一个角度看也就是我们要实现的功能,然后写一个最简单的使测试通过的代码,再进行一个循环:改进-测试-通过-改进,直到代码满意,即使不太满意但写出的代码也是可运行的。