Junit的使用
Junit是用于编写单元测试的框架。对于已经写好的函数,可以使用Junit生成单元测试代码。
自己的环境是:Linux
Java环境是:JDK1.7
IDE:Eclipse Java EE IDE for Web Developers.Version: Mars.2 Release (4.5.2) Build id: 20160218-0600
使用步骤
1、新建项目,命名为JUnit_Test,编写了一个用于计算的类:Calcutor,代码中故意留下一些问题,便于测试。代码如下:
package com.test.unit; public class Calculator { // 加法 public int add(int a, int b) { return a + b; } // 减法 public int substract(int a, int b) { return a + b; // Bug: 正确的应该是a-b } // 乘法 public int multiply(int a, int b) { try { Thread.sleep(300);//用于性能测试 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return a * b; } // 除法 public int divide(int a, int b) throws ArithmeticException { if (b == 0) { throw new ArithmeticException(); } return a / b; } // 平方根 public void squareRoot(int n) { for (;;) ; // Bug : 死循环 } }
Calculator
、引入Junit库。选中项目,右键——Build Path——Add Libraries,选择JUnit,引入的包如下:
、生成测试类。选中
Calcutor.java,右键——New——JUnit
Test Case
选择setUp,再下一步,选择要进行测试的方法,及生成了选择的函数的测试用例,再根据需要自己编写代码。
主要测试类型有三种:
(1)常规的计算测试。调用函数计算值,输入自己期望的值,以及出错信息。如果调用函数计算的值与自己期望的值不相等,则抛出出错信息。
毫秒里运行完,如果这个方法200毫秒不能运行完,那么这个方法就应该抛出异常。
(3)异常测试。期待抛出异常,如果没有抛出异常,则报错。
测试代码如下:
package com.test.unit; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class CalculatorTest { Calculator cal; @Before public void setUp() throws Exception { cal = new Calculator(); } @SuppressWarnings("deprecation") @Test public void testAdd() { int rel = cal.add(10, 5);//调用函数计算的值 assertEquals("加法有问题", 15, rel);//传入计算的值,自己期望的值,出错信息 } @Test public void testSubstract() { int rel = cal.substract(20, 5); assertEquals("减法有问题", 16, rel); } // 用于性能测试 // 要让一个方法,200毫秒里运行完,如果这个方法200毫秒不能运行完,那么这个方法就应该抛出异常 @Test(timeout = 200) public void testMultiply() { int rel = cal.multiply(2, 4); assertEquals("乘法有问题", 8, rel); } //异常测试 @Test(expected = ArithmeticException.class) public void testDivide() { int rel = cal.divide(10, 0); assertEquals("除法有问题", 5, rel); } }
CalculatorTest
、完成测试代码的编写后,包管理器中选中CalculatorTest,右键——Run as——JUnit Test,进行测试,测试结果如下:
根据报错信息再修改自己的代码。
Junit的使用的更多相关文章
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
- AndroidStudio — Error:Failed to resolve: junit:junit:4.12错误解决
原博客:http://blog.csdn.net/u013443865/article/details/50243193 最近使用AndroidStudio出现以下问题: 解决:打开app下的buil ...
- 「译」JUnit 5 系列:环境搭建
原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...
- [深入JUnit] 测试运行的入口
阅读前提 了解JUnit 对JUnit的内部实现有兴趣 不妨看看[深入JUnit] @Before, @After, @Test的秘密] 代码版本: junit 4.12代码搜索工具: http:// ...
- 「译」JUnit 5 系列:扩展模型(Extension Model)
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...
- 「译」JUnit 5 系列:架构体系
原文地址:http://blog.codefx.org/design/architecture/junit-5-architecture/ 原文日期:29, Mar, 2016 译文首发:Linesh ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
- 新手入门JUnit单元测试
首先将JUnit插件安装到Eclipse或myeclipse里面,编写完一个模块或者实体类的时候,直接右击,new一个JUnit项目,选择你想测试的实体类(模块),然后会自动生成一个类,这个类,我们将 ...
- [Android]使用自定义JUnit Rules、annotations和Resources进行单元测试(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5795091.html 使用自定义JUnit Rules.ann ...
随机推荐
- 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲
[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...
- spider 配置文件参考
spider有一个配置文件spider.xml,为xml格式,spider.xml采用DTD进行管理,用于管理spider的所有特性.路由.高可用等. 配置文件支持三种不同的方式进行指定: 1. 通过 ...
- Atitit.异步编程技术原理与实践attilax总结
Atitit.异步编程技术原理与实践attilax总结 1. 俩种实现模式 类库方式,以及语言方式,java futuretask ,c# await1 2. 事件(中断)机制1 3. Await 模 ...
- 如何数据库表数据导出到excel中
1.首先须要有一个NPOI 2.接下来上代码 private void button1_Click(object sender, EventArgs e) { //1.通过Ado.net读取数据 st ...
- SQL联合查询:子表任一记录与主表联合查询
今天有网友群里提了这样一个关于SQL联合查询的需求: 一.有热心网友的方案: 二.我的方案: select * from ( select a.*,(select top 1 Id from B as ...
- angular $http请求
angular使用post.get向后台传参的问题 一.问题的来源 我们都知道向后台传参可以使用get.put,其形式就类似于name=jyy&id=001.但是在ng中我却发现使用$http ...
- 【blade利刃出鞘】一起进入移动端webapp开发吧
前言 在移动浪潮袭来的时候,小钗有幸进入框架组做webapp框架开发,过程中遇到了移动端的各种坑,也产生了各种激情,就我们公司的发展历程来说 第一阶段:使用传统方式开发移动站点,少量引入HTML5元素 ...
- switch语句的妙用
switch语句的普通用法很简单,如下: var a = 3; switch (a) { case 1: console.log(a); break; case 2: case 3: console. ...
- 自动化集成部署udeployer 批量统一安装一键部署
通过jenkins构建项目:version版本控制:udployer自动化集成:ucop业务巡检做到高效高可用的自动化体系. 1.0版本: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一sh ...
- java 堆栈 理解
Java 中的堆和栈 堆和栈:分为数据结构的堆和栈以及内存中的堆和栈,两种理解应区分开. 数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权. 堆性质: ...