1、Junit单元测试概述
测试分类:
1、黑盒测试:不需要写代码。给输入值,看程序是否能够输出期望的值。
2、白盒测试:需要写代码。关注程序具体的执行流程。
Junit单元测试是白盒测试中的一种。
2、Junit使用
- 步骤:
1、定义一个测试类(测试用例)
建议:
a. 建议测试类名为被测试的类名Test CalculatorTest
b. 包名:xxx.xxx.xx.test cn.itcast.test
2、定义测试方法:可以独立运行
建议:
a. 方法名:test测试的方法名 testAdd()
b. 返回值:void
c. 参数列表:空参
3、给方法加@Test注解
4、导入junit依赖环境(导入junit包,然后引入Test类才能使用注解)
- 判断结果
a. 红色代表失败;绿色代表成功
b. 一般我们会使用断言操作来处理结果
Assert.assertEquals(期望的结果, 运算的结果);
package com.itheima.day01.test; public class Calculator { public int add(int a,int b){ return a-b; } public int sub(int a,int b){ return a-b; } }
package com.itheima.day01.test; import org.junit.Assert;
import org.junit.Test; public class CalculatorTest { @Test public void testAdd(){ //1.创建计算器对象 Calculator c = new Calculator(); //2.调用add方法 int result = c.add(1,2); // System.out.println(result); //3.断言 我断言这个结果为3 Assert.assertEquals(3,result); } @Test public void testSub(){ // System.out.println("我被执行了"); //1.创建计算器对象 Calculator c = new Calculator(); //2.调用sub方法 int result = c.sub(1,2); //3.断言 我断言这个结果为-1 Assert.assertEquals(-1,result); } }
执行testAdd结果:
执行testSub结果:
3、注解@Before、@After
- @Before:修饰的方法会在所有测试方法之前被自动执行
- @After:修饰的方法会在所有测试方法执行之后自动被执行
不论测试方法是否出异常,这两个方法都会执行
package com.itheima.day01.test; import org.junit.Assert; import org.junit.After; import org.junit.Before; import org.junit.Test; public class CalculatorTest { /** * 初始化方法:用于资源申请,所有测试方法在执行之前都会先执行该方法 */ @Before public void init(){ System.out.println("init..."); } /** * 释放资源方法:在所有测试方法执行完后都会自动执行该方法 */ @After public void close(){ System.out.println("close..."); } @Test public void testAdd(){ //1.创建计算器对象 Calculator c = new Calculator(); //2.调用add方法 int result = c.add(1,2); // System.out.println(result); System.out.println("testAdd..."); //3.断言 我断言这个结果为3 Assert.assertEquals(3,result); } @Test public void testSub(){ //1.创建计算器对象 Calculator c = new Calculator(); //2.调用sub方法 int result = c.sub(1,2); System.out.println("testSub..."); //3.断言 我断言这个结果为-1 Assert.assertEquals(-1,result); } }
执行testAdd方法结果:
执行testSub方法结果:
4、总结与补充
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@Before:初始化方法
@Test:测试方法,在这里可以测试期望异常和超时时间
@After:释放资源
@AfterClass:针对所有测试,只执行一次,且必须为static void
@Ignore:忽略的测试方法
一个单元测试用例执行顺序为: @BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为: @Before –> @Test –> @After