Junit测试

最近参加了一个比较大的项目,是用Java做的。之前因为赶进度的原因,没有强调单元测试的问题。结果,在版本发布的时候出现了好多不知名的bug,之后才开始反省(项目经验还是需要积累的呀)。然后就开始了补Junit的过程。

我本人对Java了解只是限于基础知识而已,真正的项目开发还真的是第一次参与,所以我的第一个工作就是理解别人写的一个关键部分的代码(最后发现都木有注释的,郁闷死我了)。正好赶上了项目组要进行单元测试的事儿,所以我便承担了我看的那个部分的单元测试的编写。

Junit测试之前只是听说过,没有用过,所以什么都是第一次,把这个记下来,方便以后使用。

其实,Junit没什么神秘的,只是一个测试的框架已经被搭建好了而已,我们照着这个框架把要测试的东西写好,然后就可以方便的进行判断你写的函数、功能是不是跟想要的功能一致,假如不一致,就可以立马发现问题,在自己这儿就解决掉,对整个工程的健壮性是很有好处的。

下面写一下我在写Junit的过程中的一些总结吧。

        (1)测试的粒度

        我感觉这个要具体问题具体分析:

一般来说,set和get方法都是不需要测试的,因为这些比较简单,当然如果逻辑复杂的话,我认为还是有必要测试的;

构造函数:构造函数是又必要进行测试的,因为它很重要。测试的时候,一般通过类里面提供的一些get方法,来判断想要设定的一些量是不是已经正确的初始化;

protected函数:protected函数的位置比较特殊,外部包的类不能随便的进行调用,包内部的类却可以方便的进行使用,而且外部包的子类也可以使用。一般写单元测试都是在另外的一个包里进行,但是这个protected函数又使很核心的,非测不可的一个函数,这个时候有一个很好的手段进行测试——在测试的包中新建一个要测试的类的子类,命名:Public***,只要在这个子类中写一些构造函数,将必要的参数调用要测试的类的构造函数就好了,然后就可以对protected方法进行方便的测试了。因为相当于Public***这个类就有了父类的方法,而且是在测试的包中,可以方便的进行调用。

总的来说还是要灵活进行的,有可能出现问题的,比较复杂的函数都应该进行测试。

(2)测试的大体步骤

在测试过程中用的是Junit4来进行的,提供了丰富的Annotations可以进行方便的使用。

在查找资料的过程中可以发现,Junit4相对于之前的Junit3.8来说就是加了很多的Annotation的特性,使得测试的过程更加的方便,但是使用Junit4的时候要多加一个包org.hamcrest.core_1.1.0.v20090501071000.jar,因为是在工程中进行测试的,所以刚开始测试Junit4的新特性的时候总是会出问题,最后才知道就是少了这么一个包。

在@BeforeClass修饰的方法中初始化一些条件,这个在测试类开始执行的时候,会初始化一次;

在@AfterClass修饰的方法中释放某些资源,这个在测试类执行完毕的时候,会调用;

在@Before修饰的方法中,添加一些在每个test方法执行之前要进行的工作;

在@After修饰的方法中,添加一些在每个test方法执行之后要进行的工作;

在@Test方法中,添加每个测试的测试代码,其中通过提供的assert系列的函数进行判定预期结果和运行结果是否相符,这也就是Junit测试的精髓了。

(3)测试文件的位置

在测试的过程中需要用一些XML文件作为生成对象的配置文件,自己在测试的时候直接放在了D盘目录下。但是测试的程序别人也要跑的,所以在别人跑测试的时候就发现了这个问题。

解决的办法就是将这些用到的文件也添加到工程中,直接加在相应的测试包下就可以了。然后程序中在进行引用的时候就写相对路径就可以了(因为程序要再windows和linux环境下都能够运行)。相对路径就是从这个工程含有bin/src等文件夹的那个目录开始的,保中可能有很多"."号,表示子包的意思,作为路径的时候都要将这些作为“/”,作为子文件夹。

之后就可以在任何人的机器上跑这些测试程序了。

附:Junit4的一个比较详细的介绍:深入探索 JUnit 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值