1 package com.yubaby.junit; 2 3 /** 4 * 计算器类 5 */ 6 public class Calculator { 7 8 /** 9 * 加法 10 * @param a 11 * @param b 12 * @return 13 */ 14 public int add(int a, int b){ 15 // int i = 3 / 0; //JUnit测试类运行时,控制台变红,说明被测程序有异常 16 17 return a + b; 18 19 // return a - b; 20 } 21 22 /** 23 * 减法 24 * @param a 25 * @param b 26 * @return 27 */ 28 public int sub(int a, int b){ 29 return a - b; 30 } 31 }
1 package com.yubaby.junit; 2 3 /** 4 * 传统手工测试 5 * 弊端是不够灵活 6 */ 7 public class CalculatorTest { 8 public static void main(String[] args) { 9 //创建计算器类对象 10 Calculator c = new Calculator(); 11 12 //调用加减法进行测试 13 int result = c.add(1, 2); 14 System.out.println(result); 15 16 result = c.sub(1, 2); 17 System.out.println(result); 18 } 19 }
1 package com.yubaby.test; 2 3 import com.yubaby.junit.Calculator; 4 import org.junit.After; 5 import org.junit.Assert; 6 import org.junit.Before; 7 import org.junit.Test; 8 9 /* 10 1 Junit单元测试 11 * 测试分类: 12 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 13 2. 白盒测试:需要写代码的。关注程序具体的执行流程。 14 15 * Junit使用:白盒测试 16 * 步骤: 17 1. 定义一个测试类(测试用例) 18 * 建议: 19 * 测试类名:被测试的类名Test CalculatorTest 20 * 包名:xxx.xxx.xx.test cn.itcast.test 21 22 2. 定义测试方法:可以独立运行 23 * 建议: 24 * 方法名:test测试的方法名 testAdd() 25 * 返回值:void 26 * 参数列表:空参 27 28 3. 给方法加@Test 29 4. 导入junit依赖环境 30 31 * 判定结果: 32 * 红色:失败 33 * 绿色:成功 34 * 一般我们会使用断言操作来处理结果 35 * Assert.assertEquals(期望的结果,运算的结果); 36 37 * 补充: 38 * @Before: 39 * 修饰的方法会在测试方法之前被自动执行 40 * @After: 41 * 修饰的方法会在测试方法执行之后自动被执行 42 */ 43 /** 44 * JUnit测试类 45 */ 46 public class CalculatorTest { 47 48 /** 49 * 测试add方法 50 */ 51 @Test //添加该注解后,该测试方法可以独立运行,而不需要main();注解依赖添加方法:左侧红灯泡提示,点击add Junit4 to classpath,弹框点ok 52 public void testAdd(){ 53 // System.out.println("testAdd()被执行了"); 54 55 Calculator c = new Calculator(); 56 System.out.println(c.add(1,2)); //被测程序逻辑错误时,并不能从控制台的红色或绿色来判断被测程序是否有问题,故应使用断言来测试 57 System.out.println(c.sub(1, 2)); 58 59 //Assert类,断言 60 int result = c.add(1,2); 61 Assert.assertEquals(3, result); //断言结果为3,与被测程序输出结果对比 62 //断言:成功不输出,失败输出问题 63 } 64 65 /** 66 * 测试sub方法 67 */ 68 @Test 69 public void testSub(){ 70 System.out.println("testSub()"); 71 72 Calculator c = new Calculator(); 73 Assert.assertEquals(-1, c.sub(1, 2)); 74 } 75 76 /** 77 * 初始化方法 78 * 用于资源申请等,比如重复的IO流创建等 79 * 所有测试方法在执行之前都会自动先执行该方法 80 */ 81 @Before 82 public void init(){ 83 System.out.println("init()"); 84 } 85 86 /** 87 * 释放资源放啊 88 * 所有测试方法在执行之后都会自动执行该方法 89 */ 90 @After 91 public void close(){ 92 System.out.println("close()"); 93 } 94 }