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的使用的更多相关文章

  1. 记一个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 ...

  2. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

  3. AndroidStudio — Error:Failed to resolve: junit:junit:4.12错误解决

    原博客:http://blog.csdn.net/u013443865/article/details/50243193 最近使用AndroidStudio出现以下问题: 解决:打开app下的buil ...

  4. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

  5. [深入JUnit] 测试运行的入口

    阅读前提 了解JUnit 对JUnit的内部实现有兴趣 不妨看看[深入JUnit] @Before, @After, @Test的秘密] 代码版本: junit 4.12代码搜索工具: http:// ...

  6. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  7. 「译」JUnit 5 系列:架构体系

    原文地址:http://blog.codefx.org/design/architecture/junit-5-architecture/ 原文日期:29, Mar, 2016 译文首发:Linesh ...

  8. 「译」JUnit 5 系列:基础入门

    原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...

  9. 新手入门JUnit单元测试

    首先将JUnit插件安装到Eclipse或myeclipse里面,编写完一个模块或者实体类的时候,直接右击,new一个JUnit项目,选择你想测试的实体类(模块),然后会自动生成一个类,这个类,我们将 ...

  10. [Android]使用自定义JUnit Rules、annotations和Resources进行单元测试(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5795091.html 使用自定义JUnit Rules.ann ...

随机推荐

  1. 记录一次bug解决过程:git深入学习和JDK8新特性

    一 总结 熟悉廖雪峰git基础; 由于git跟踪的是修改,而不是版本号:因此对于修改撤销的操作,文件在eclipse中依旧有>修改标记,这点不同于svn. 二 BUG描述:熟悉Git基础 在Gi ...

  2. 9.1.2 asp.net core 自动生成组合查询

    在做系统的时候,经常遇到前台录入一大堆的查询条件,然后点击查询提交后台,在Controller里面生成对应的查询SQL或者表达式,数据库执行再将结果返回客户端. 例如如下页面,输入三个条件,日志类型. ...

  3. SharePoint 2016 配置向导报错 - The 'ListInternal' attribute is not allowed

    前言 配置SharePoint 2016的配置向导中,第三步创建配置数据库报错,然后百度.谷歌了一下,都没有解决,自己看日志搞定,也许会有人遇到类似问题,分享一下. 1.配置向导的错误截图,如下图: ...

  4. sqlite索引的原理

    引言 这篇文章,里面讲到对于一个41G大小.包含百万条记录的数据库进行查询操作,如果利用了索引,可以把操作耗时从37s降到0.2s. 那么什么是索引呢?利用索引可以加快数据库查询操作的原理是什么呢? ...

  5. 简单的学习心得:网易云课堂Android开发第六章SQLite与ContentProvider

    一.SQLite 1.基本操作: (1)创建数据库:在SQLiteOpenHelper的子类构造器中创建. (2)创建表:在SQLiteOpenHelper的子类onCreate方法中,调用execS ...

  6. QQ空间/朋友圈类界面的搭建

    类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的f ...

  7. 分享iOS开发常用(三方类库,工具,高仿APP,实用网站,技术干货)

    一 . JSONModel  (三方类库会有更新,建议大家在线下载) http://pan.baidu.com/s/1i5ybP1z 二.AFNetworkiong http://pan.baidu. ...

  8. 自动化集成部署udeployer 批量统一安装一键部署

    通过jenkins构建项目:version版本控制:udployer自动化集成:ucop业务巡检做到高效高可用的自动化体系.   1.0版本: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一sh ...

  9. Node.js 教程 05 - EventEmitter(事件监听/发射器 )

    目录: 前言 Node.js事件驱动介绍 Node.js事件 注册并发射自定义Node.js事件 EventEmitter介绍 EventEmitter常用的API error事件 继承EventEm ...

  10. 关于Spring的构造函数,init-method,和依赖注入的先后顺序

    接触学习Spring一段时间了,今天突然脑子短路,竟然一时间忘记了构造函数,init-method,和依赖注入的先后顺序,然后打开IDE去验证后.构造函数-->依赖注入-->init-me ...