在一个项目中,程序员每天的工作无非是,将今天需要做得事情从svn服务器中checkout下来,然后运行一遍单元测试,之后开始编写代码,下班时,在运行一次单元测试,然后提交代码,周而复始。
在一些小公司里,可能并不是那么规范,所以也可能不会用到junit,但是大部分比较正规的软件还是必须的,我们要做的就是,使自己更专业,做事更流程化、规范化,这才是你要去往的方向。
企业开发一款软件,一般要经历一下几个阶段的测试,单元测试、模块测试、集成测试、压力测试等。测试的内容相当之多,这里我们就从单元测试开始。
因为现在主要使用的还是junit4,所以主要讲junit4,下载地址:http://sourceforge.net/projects/junit/ 使用junit的基本原则是:
1、导入junit的jar,不建议直接使用eclipse中所提供的包。
2、在src目录下编写服务代码
3、创建测试类
基本原则: 1、在eclipse中创建一个source folder命名为test
2、创建一个测试类所在的包,包的名称和测试的类一致。
4、Junit3和Junit4两者之间的区别是非常明显的
在Junit3中,如果某个类需要是测试类,必须将其继承于TestCase, 如果某个方法需要是测试方法,必须让这个方法通过testXXX开头,在junit3中,如果希望指定某个测试方法运行之前运行某个初始化方法,这个方法的名称必须是setUp,如果希望在某个测试方法运行之后运行某个释放资源的方法,这个方法的名称必须是teadDown
在Junit4中,一个POJO类就是一个测试类,测试方法通过@Test来标识,初始化方法通过@Before,释放资源的方法通过@After来标注。但是为了让Junit4中的测试类在Junit3中也可以使用,习惯与把初始化方法命名为setUp, 释放资源的方法命名为tearDown,测试方法也同样以test开头。
5、如何使用断言
在junit4中提供了一个Assert的类,这个类中有大量的方法进行断言处理,在junit3中由于继承了TestCase,这个TestCase中提供了大量的assert方法
junit扩展工具hamcrest
下载地址:https://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-1.3.zip
hamcrest可以有效增加junit的测试能力,用一些相对通俗的语言来进行测试
要使用junit中的assertThat来进行断言
第一个参数表示实际值,第二个参数表示hamcrest的表达式
特别注意:如果使用junit4.10,必须把hamcrest的jar包移到junit的jar之前,否则,组合条件allOf,anyOf都会抛出异常。
组合多个测试类,同时测试使用TestSuite
package com.wp.util;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({ TestA.class,
TestB.class,
TestCulcuate.class })
public class TestSuite {
/*
* 测试原则:
* 1、建议创建一个专门的source folder --> test来编写测试类代码
* 2、测试类的包应该保持和需要测试的类一致
* 3、测试单元中的每一个测试方法都必须可以独立执行,没有顺序
*/
}
基本结构就是上面的样子。