一.新建测试类注意点
1.测试方法必须用@Test修饰
2.测试方法必须用public void修饰不能带任何参数
3.新建一个源代码目录来存放测试代码
4.测试类包名和被测试类包名保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
6.测试类使用使用Test作为类名的后缀(非必须)
7.测试方法使用test作为方法名的前缀(非必须)
二.Failure和error
1.Failure表示测试点输出的结果和预期不一样
2.error是由代码本声的bug引起的
3.测试用例不是证明你是对的而是证明你没有错
三.运行流程
1.@BeforeClass修饰的方法会在所有方法被调用前被指执行,该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只会存在一个实例,它比较适合加载配置文件。
2.@AfterClass所修饰的方法通常用来对资源清理,比如关闭数据库
3.@Before和@After会在每个测试方法前后各执行一次
四.注解
1.@Test把一个普通方法变成测试方法
@Test(expected=XX.class)例:@Test(expected=ArithmeticException.class)
@Test(timeout=毫秒)
2.@BeforeClass,在所有的方法运行前被执行,static 修饰
3.@AfterClass,在所有的方法结束后b被执行,static 修饰
4.@Before和@After会在每个测试方法前后各执行一次
5.@Ignore修饰的方法会被测试忽略
五.测试套件
1 @RunWith(Suite.class) 2 @Suite.SuiteClasses({CalculateTest.class,Calculate2.class}) 3 public class SuitTest { 4 /** 5 * 测试套件就是组织测试类一起运行的 6 * 写一个作为测试套件的入口类,这个类里不包含其他方法 7 * 更改测试运行器Suite.class 8 * 将要测试的类作为数组传入到@Suite.SuiteClasses({})中 9 */ 10 11 12 }
六.JUnit参数化设置
1 package xom.imooc; 2 3 import static org.junit.Assert.*; 4 5 import java.util.Arrays; 6 import java.util.Collection; 7 8 import org.junit.Test; 9 import org.junit.runner.RunWith; 10 import org.junit.runners.Parameterized; 11 import org.junit.runners.Parameterized.Parameters;
/**
1.更改默认的测试运行器为 @RunWith(Parameterized.class)
2.声明变量存放预期值和结果值
3.声明一个返回值为Collection的公共静态方法,并用 @Parameters修饰
4.为测试类声明一个带有参数的公共构造函数,并在其中为其声明变量赋值
**/ 12 @RunWith(Parameterized.class) 13 public class ParameterTest { 14 15 int expected=0; 16 int input1=0; 17 int input2=0; 18 19 @Parameters 20 public static Collection<Object[]>t(){ 21 22 return Arrays.asList(new Object[][]{ 23 {3,1,2}, 24 {4,2,2} 25 }); 26 } 27 28 public ParameterTest(int expected,int input1,int input2){ 29 this.expected=expected; 30 this.input1=input1; 31 this.input2=input2; 32 } 33 34 @Test 35 public void testAdd(){ 36 assertEquals(expected, new Calculate().add(input1, input2)); 37 } 38 }