junit4.x
(1)、使用junit4.x版本进行单元测试时,不用测试类继承TestCase父类,因为,junit4.x全面引入了Annotation来执行我们编写的测试。
(2)、junit4.x版本,引用了注解的方式,进行单元测试;
(3)、junit4.x版本我们常用的注解:
A、@Before 注解:与junit3.x中的setUp()方法功能一样,在每个测试方法之前执行;
B、@After 注解:与junit3.x中的tearDown()方法功能一样,在每个测试方法之后执行;
C、@BeforeClass 注解:在所有方法执行之前执行;
D、@AfterClass 注解:在所有方法执行之后执行;
E、@Test(timeout = xxx) 注解:设置当前测试方法在一定时间内运行完,否则返回错误;
F、@Test(expected = Exception.class) 注解:设置被测试的方法是否有异常抛出。抛出异常类型为:Exception.class;
G、@Ignore 注解:注释掉一个测试方法或一个类,被注释的方法或类,不会被执行。
package test;
import java.util.Arrays;
import java.util.Collection;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
//(1)步骤一:测试类指定特殊的运行器org.junit.runners.Parameterized
@RunWith(Parameterized.class)
public class TestT1 {
t1 t1;
// (2)步骤二:为测试类声明几个变量,分别用于存放期望值和测试所用数据。
int x, y, z,expected;
// (3)步骤三:为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
public TestT1(int x, int y, int z,int expected) {
System.out.println("初始化");
this.x = x;
this.y = y;
this.z = z;
this.expected = expected;
}
// (4)步骤四:为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为
// java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
@Parameters
public static Collection Data() {
}
@BeforeClass
// 在所有方法执行之前执行
public static void globalInit() {
//System.out.println("init all method...");
}
@AfterClass
// 在所有方法执行之后执行
public static void globalDestory() {
//System.out.println("destory all method...");
}
@Before
// 在每个测试方法之前执行
public void setUp() {
//System.out.println("start setUp method");
t1=new t1();
}
@After
// 在每个测试方法之后执行
public void tearDown() {
//System.out.println("end method");
}
@Test
public void testWork1() {
int act = t1.work(x, y, z);
Assert.assertEquals(expected, act);
}
@Test
public void testWork2() {
int act = t1.work(x, y, z);
Assert.assertEquals(expected, act);
}
@Test
public void testWork3() {
int act = t1.work(x, y, z);
Assert.assertEquals(expected, act);
}
@Test(timeout = 1000)
public void testWork4() {
int act = t1.work(x, y, z);
Assert.assertEquals(expected, act);
}
}