Junit是一个开源框架,可以写重复的自动化测试来确保代码的正确。它能够提供:
(1)期望结果测试告警
(2)共享常用的测试数据
(3)易于组织和运行测试的测试套件
(4)图形化的测试运行
它可以被用来测试:
(1)一个完成的对象;
(2)一个对象的一部分--一个方法或者是一些相关联的方法;
(3)几个对象之间的关联
1、Junit的简单例子
有下面一个类:
package com.junit.calc;
public class Calculate{
public int sum(int val1, int val2){
System.out.println("adding value: " + val1 + "+" + val2);
return val1 + val2;
}
}
包含一个方法sum,接受两个int类型的变量,并返回两个变量的和。
现在用Junit对其进行测试,代码如下:
import com.junit.calc.Calculate;
import junit.framework.Assert;
import org.junit.Test;
public class CalculateTest{
Calculate calc = new Calculate();
int sum = calc.sum(2, 8);
int testSum = 7;
@Test
public void testSum(){
System.out.println("@test sum" + sum + "=" +testSum);
Assert.assertEquals(testSum, sum);
}
}
首先是有一个@Test注解,这个注解表明了testSum方法是用来测试的,然后是
Assert.assertEquals(testSum, sum);
这个方法用来对比期望和实际的值,当两个值相等时不会告警,输出两个值告警,当两个值不相等时,告警,并中断程序执行。
2、Junit的注解介绍
(1)@Test 该注解表明了它所附属的public void 方法是一个测试实例。
(2)@Before 该注解表明了它所附属的方法必须在测试之前执行,以便执行一些测试前的预处理。
(3)@BeforeClass 该注解表明它所附属的静态方法只能执行一次,并且只能在所有测试之前执行。
(4)@After 该注解表明它所附属的方法在每一个测试完成之后都会执行,用于重置一些测试之后的变量。
(5)@AfterClass 该注解表明它所附属的方法在所有测试完成之后执行。
3、Junit assertions
Junit提供了一系列的Assert方法, 下面进行简单介绍。
(1)assertEquals 断言两个值是相等的,其中的两个值一个指的是期望值,一个指的是实际值。值可以是int boolen short long byte char 或者是object类型。
(2)assertTrue 断言判断条件是否为真
(3)assertFalse 断言判断条件是否为假
(4)assertNull 断言一个对象是空的
(5)assertNotNull 断言一个对象不是空的
(6)assertSame 断言两个对象引用指向的是同一个对象
(8)assertNotSame 断言两个对象引用指向的是不同对象
(9)assertArrayEquals 断言两个数组是相等的