测试使用Junit4-开发工具IDEA
1:Src目录下-编写正常代码
2:与Src同级目录下-创建一个测试目录-如其名叫:test
3:在test目录下创建对应的测试类:如业务类叫(Junit_)-对应的测试类其名叫(JunitTest)
规范:
1:测试方法上必须写@Test注解
2:测试方法必须使用public void 不能带参数和返回值
3:测试单元中的测试方法必须独立运行,测试方法之间不能存在依赖
4:测试类命名,后缀为Test结尾,测试方法命名,前缀按照Test开始
测试代码
//模拟业务代码
public class Junit_ {
public int add(int a,int b){
return a+b;
}
public int subtract(int a,int b){
return a-b;
}
public int multiply(int a,int b){
return a*b;
}
public int divide(int a,int b){
return a/b;
}
}
//模拟测试代码
public class JunitTest {
@Test
public void testAdd(){
Assert.assertEquals(6,new Junit_().add(3,3));
}
@Test
public void testSubtract(){
Assert.assertEquals(0,new Junit_().subtract(3,3));
}
@Test
public void testMultiply(){
Assert.assertEquals(9,new Junit_().multiply(3,3));
}
@Test
public void testDivide(){
Assert.assertEquals(1,new Junit_().divide(3,3));
}
}
A:@BeforeClass-被此注解修饰过的测试方法会在所有方法前被执行,是静态方法,适合用来提前加载配置类
B:@AfterClass-被此注解修饰过的测试方法会在所有方法后被执行,是静态方法,适合用来关闭资源
C:@Before-修饰方法会在@Test方法之前执行
D:@After-修饰方法会在@Test方法之后执行
E:@Test-修饰方法属于普通测试类,其中有两个参数
a:@Test(expected = xxx.Class)期望异常测试
例如:@Test(expected=ArithmeticException.class)
如果测试该方法时产生一个ArithmeticException的异常,则表示测试通过,否则测试不通过,没有达到预期值。
b:@Test(timeout = 毫秒)
设置超时时间,若在设置的时间内方法没有执行完则测试失败,可以测试并发或者文件传输默认超时时间
F:@Ignore-所修饰的测试方法会被测试运行器所忽略
在@Test普通测试方法上标注@Ignore的方法将不再执行
G:@RunWith-可以更改测试运行器
JUnit所有的测试方法都是由测试运行器负责执行,默认的测试运器:BlockJUnit4ClassRunner
a:@RunWith(Suite.class) 其作用是使用JUnit执行一个测试套件。
b:@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
c:@RunWith(Parameterized.class)参数化测试:对多组数据同时测试
H:@Parameters-生成静态参数用于参数化测试
配合@RunWith(Parameterized.class)参数化测试:对多组数据同时测试,使用
注解执行结果
测试套件:顾名思义如果像对多个测试类进行集体测试可以使用
a:创建一个SuiteTest空类
b:在SuiteTest类中加入RunWith(Suite.class)
c:和@Suite.SuiteClasses({JunitTest01.class,JunitTest02.class,JunitTest03.class})测试集
a:更新测试运行器为@RunWith(Parameterized.class)
b:声明变量存放预期值和结果集
c:创建公共有参构造器
d:声明一个返回值为Collection的公共静态方法,并添加注解@Paramenter,其中可以存放多个结果集
解释:用来进行多个结果集的测试,不用在分批去测
@RunWith(Parameterized.class)
public class ParameterJunitTest {
int expected = 0;
int input1 = 0;
int input2 = 0;
public ParameterJunitTest(int expected, int input1, int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
@Parameterized.Parameters
public static Collection