Junit 单体测试
2016-05-13 16:33
363 查看
代码测试:
白盒测试:测试代码结构和逻辑(可见代码测试):黑盒测试:测试代码功能和性能(不可见代码测试)
白盒测试局限性:1、不可能测试所有代码。2 白盒测试难度比极高。
单体测试是一种白盒测试,测试代码功能模块 – 测试代码单个功能
junit 是java 的单体测试技术
1、编写junit 在工程引用junit 类库
2、编写单体测试用例
* 创建public void 无参数的方法 、在方法前添加@Test 注解
3、每个测试方法 相当于以前编写main 函数,每个测试方法可以单独执行
在使用junit进行测试当方法非常多,每个方法输出内容到控制台,人们无法通过人工进行检查
* 自动化结果检查 — 断言 Assert
断言原理:调用方法,调用方法前,准备测试数据、测试数据运行结果 —— 比较实际结果与预期结果是否相同
编写单体测试时,不要仅测试正确的数据和结果,测试不正确数据(非法数据)
代码:
测试代码:
白盒测试:测试代码结构和逻辑(可见代码测试):黑盒测试:测试代码功能和性能(不可见代码测试)
白盒测试局限性:1、不可能测试所有代码。2 白盒测试难度比极高。
单体测试是一种白盒测试,测试代码功能模块 – 测试代码单个功能
junit 是java 的单体测试技术
1、编写junit 在工程引用junit 类库
2、编写单体测试用例
* 创建public void 无参数的方法 、在方法前添加@Test 注解
3、每个测试方法 相当于以前编写main 函数,每个测试方法可以单独执行
在使用junit进行测试当方法非常多,每个方法输出内容到控制台,人们无法通过人工进行检查
* 自动化结果检查 — 断言 Assert
断言原理:调用方法,调用方法前,准备测试数据、测试数据运行结果 —— 比较实际结果与预期结果是否相同
编写单体测试时,不要仅测试正确的数据和结果,测试不正确数据(非法数据)
代码:
package com.qddx; /* * 编写加减乘数方法 * */ public class Calcultor { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } public int mul(int a, int b) { return a * b; } public int div(int a, int b) { if (b == 0) { throw new RuntimeException("除数为零"); } return a / b; } }
测试代码:
package com.qddx; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; //@ignore 可以忽略不想执行的方法。 public class CalcultorTest { // 在每个测试方法前执行的代码 @Before public void before() { System.out.println("before..."); } // 在每个测试代码后执行的代码 @After public void after() { System.out.println("after"); } // 在整个测试类实例化之前只想一段代码 @BeforeClass public static void befrClass() { System.out.println("before...."); } // 在整个类对象使用之后 @AfterClass public static void afterClass() { System.out.println("afterclass"); } @Test public void testAdd() { // 方法进行测试 int a = 6; int b = 9; Calcultor c = new Calcultor(); int result = c.add(a, b); System.out.println(result); // 比较实际结果和语气结果的值 Assert.assertEquals(15, result); } @Test public void testSub() { int a = 6; int b = 9; Calcultor c = new Calcultor(); int result = c.sub(a, b); System.out.println(result); // 比较实际结果和预期结果的值 使用断言 Assert.assertEquals(-3, result); } @Test public void testMul() { int a = 6; int b = 9; Calcultor c = new Calcultor(); int result = c.mul(a, b); System.out.println(result); // 比较实际结果和语气结果的值 Assert.assertEquals(54, result); } @Test public void testDiv() { int a = 6; int b = 2; Calcultor c = new Calcultor(); int result = c.div(a, b); System.out.println(result); // 比较实际结果和语气结果的值 Assert.assertEquals(3, result); } }
相关文章推荐
- CentOS下配置VNC
- 关于在MVC4中增加强类型的View时找不到Model问题的处理记录
- "a".equals(null)为false, a= null,a.equals()就不行了
- android studio 引用Lisbs的.so文件
- System V 机制(转)
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 类型基础
- MyEclipse中对项目分类管理
- Android内核开发:如何统计系统的启动时间
- 关于perfmon2的使用记录
- SKU
- CPLD与FPGA
- 设置UIButton中titleLabel和ImageView的位置
- 当鼠标在图片上滑动或移出时,实现图片切换
- Java 移位运算(<<、>>、>>>)
- 大中型项目技术架构
- 从ASP.NET 升级到ASP.NET5(RC1) - 翻译
- 笔记整理之BCP
- 使用sys用户删除其他schema下的dblink
- linux服务器上定时备份 mysql 数据库