代码改变世界

浪曦视频《J2EE测试使用指南Junit3.8详解》学习总结

2010-06-04 16:40  DeguangLi  阅读(529)  评论(0编辑  收藏  举报

虽然曾自学过Junit4,但一直停留在会用,却不知道怎么用才合适的阶段,通过学习浪曦的免费视频《J2EE测试使用指南Junit3.8详解》,偶学到了不少关于测试的知识,使我对测试有新的认知和了解一些最佳实践。

keep the bar green to keep the code clean

 单元测试不是证明您是对的,而是证明您没有错误.


好了,废话少说,总结这一次的一些知识点。
主要分成两个部分:
一,Junit3.8相关
a)测试类必须继承自junit.framework.TestCase
b)测试方法必须满足以下条件:
                        i.必须是public
                      ii.返回值是void,即无返回值
                    iii.无参数的
                     iv.test开头的,junit3.8以反射的方式获取test开头的方法名并调用。
c)setUp方法:在调用每个测试方法前会调用。比如在setUp中重新实例化要测试的对象可以保证测试方法里面的测试对象都是新的。
d)tearDown方法:在调用完每个测试方法后会被调用。(setUptearDown方法是Override TestCase中定义的方法,应该是使用模板设计模式。)
e)junit3.8不存在在所有测试方法执行之前执行一个方法,所有测试方法执行以后执行一个方法的方式(仅执行一次),这是它的一个弊端,但4.0以后就支持了。
f)批量执行测试,看代码:
public class AllTests
{
    public static Test suite()
    {

       // TestSuite表示一个测试的序列或者组(),可以通过addTestSuite方法来添加要测试的类,也可以添加测试的套件()
        TestSuite sutie = new TestSuite(“suite name”);
        suite.addTestSuite(TestClass1.class);
        suite.addTestSuite(TestClass2.class);
        //….
        return suite;
    }
}

g)Junit3.8中没有一种方式可以使抛出指定的异常类型的测试方法通过测试,只能用手动的方式来检查异常的类型。Juint4.0后可以。
h)Junit不依赖于IDE,本身就提供了运行测试的UI界面,可以调用以下这些包的TestRunner.run(测试类.class)方法来运行并查看测试结果。
                        i.junit.textui 命令行方式,这里要说明一下运行的结果第一行打印出来的点“.”表示运行的一个测试方法。
                      ii.junit.awtui  awt构建的UI界面
                    iii.junit.swingui swing构建的UI界面
二,测试的知识和最佳实践。
a)eclipse的项目中建立一个Source Folder,如test,然后在这个Source Folder建立跟要测试的类所在的包同名的包,然后在这个包下的创建测试类。这样编译后产生的源代码class文件和测试用的class文件在同一个包下,而且测试类可以不用导入要测试的类。
b)测试类的命名:在要测试的类的名称后加Test。如要测试的类名称为Date,测试类的命名为DateTest
c)在测试中往往会对一个方法进行不同方式的测试,即一个方法对应多个测试方法,可以在方法的后缀添加2345…加以区分。
d)测试方法之间互不干扰,一个测试方法的结果不能依赖于之前的测试结果或是输出。
e)断言的相关最佳实践
                        i.如果某个方法期望是正常运行的却抛出异常(需要catch),可以在catch代码块中使测试fail
                      ii.如果某个方法期望是抛出异常的却没有抛出,可以在该方法执行后使测试fail
                    iii.对一个有参数的方法进行测试一般要测试参数的边界值,空值情况。(自己总结)