java单元测试框架-JUnit4
1、做单元测试的原因
减少时间、提升质量。
2、入门
1)测试一个类中的方法
准备jar包-JUnit4;
编写类和类的方法;
建立测试类,编写测试方法,测试方法加@Test注解。断言方法assertEquals()
3、使用详解
1)测试代码要新建目录和业务代码分开,方便测试和项目打包(项目打包不要打包测试代码)
2)原则
1,测试方法上必须使用@Test进行修饰。 2,测试方法必须使用public void进行修饰,不能带任何参数。
3,新建一个源代码目录来存放我们的测试代码。
4,测试类的包应该和被测试类保持一致。
5,测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖。
6,测试类使用Test作为类名的后缀(不是必须的)
7,测试方法使用test作为方法名的前缀。(不是必须的)
3、测试失败的两种情况。
测试用例不是用来证明你是对的,而是用来证明你没有错。测试用例只是用来达到你想要的预期结果,但对于逻辑错误无能为力。
1)运行结果failure,一般有单元测试的调研方法,判断失败所引起的表示经过测试点发现了问题。就是说程序输出的结果和我们预期的不一样。
2)运行结果error,这是有代码异常引起的,它可以产生于代码本身的错误,也可以是被测代码中的一个隐藏的bug。
3、JUnit运行流程
@BeforeClass 1 运行一次
@AfterClass 5 运行一次
@Before 2 每次调用@Test前运行
@After 4每次调用@Text后运行
@Test 3
@BeforeClass修饰的方法会在所有方法被调用前执行,而且该方法是静态的,所以当测试列表加载后就会接着它运行。而且在内存中它则会存在一份实力,比较适合加载配置文件。
@AfterClass所修饰的方法通常用来对资源的管理,比如关闭数据库的连接。
@Before和@After会在每个测试方法的前后各执行一次。
4、常用注解
@ Test 将一个普通的方法修饰成一个测试方法。同时有各种异常处理机制。
eg:@Test(expected=ArithmeticException)
@Test(timeout=毫秒)
@Ignore("不执行的原因") 所出示的测试方法会对测试运行其忽略。
@RunWith可以更改测试运行器。
还有各种断言方法assertXxx()。
5、测试套件(批量运行测试方法)
1)编写一个测试套件。
@RunWith(Suite.class)
@Suite.SuiteClass({类1.class,类2.class,....})
public class SuiteTest{}
测试套间就是组织测试类一起运行的。写一个作为测试套件的入口类,这个类里不包含其他的方法。
6、参数化设置
@RunWith(parameterized.class)更改默认的测试运行器。
@Parameters 这个注解修饰的方法返回断言中的参数参数。
一,更改默认的测试运行器
二,声明变量来存放预期值和结果值
三,声明一个返回值为Collection的公共静态方法并使用@Parameters进行修饰。
四,为测试类声明一个带有参数的公共构造函数,并在其中预知声明变量赋值。
7、整合spring
利用注解方法预先加载applicationContest.xml文件。