我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以程序员们编写单元测试的热情不是很高。于是有一个牛人推出了单元测试包,大大简化了进行单元测试所要做的工作,这就是JUnit4。本文简要介绍一下在Eclipse中使用JUnit4进行单元测试的方法。

首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都有说明。该类代码如下:

package andycpp;

public class Calculator {
    private static int result; // 静态变量,用于存储运行结果
    public void add(int n) {
        result = result + n;
    }
    public void substract(int n) {
        result = result - 1;  //Bug: 正确的应该是 result =result-n
    }
    public void multiply(int n) {
    }         // 此方法尚未写好
    public void divide(int n) {
        result = result / n;
    }
    public void square(int n) {
        result = n * n;
    }
    public void squareRoot(int n) {
        for (; ;) ;                   //Bug : 死循环
    }
    public void clear() {     // 将结果清零
        result = 0;
    }
    public int getResult() {
        return result;
    }
}

第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键,点“属性”,如图:

在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”按钮,如下图所示:


然后在新弹出的对话框中选择JUnit4并点击确定,如上图所示,JUnit4软件包就被包含进我们这个项目了。

第三步,生成JUnit测试框架:在Eclipse的Package Explorer中用右键点击该类弹出菜单,选择“New à JUnit Test Case”。如下图所示:
在弹出的对话框中,进行相应的选择,如下图所示:

点击“下一步”后,系统会自动列出你这个类中包含的方法,选择你要进行测试的方法。此例中,我们仅对“加、减、乘、除”四个方法进行测试。如下图所示:

之后系统会自动生成一个新类CalculatorTest,里面包含一些空的测试用例。你只需要将这些测试用例稍作修改即可使用。完整的CalculatorTest代码如下:

package andycpp;

import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

public class CalculatorTest {

private static Calculator calculator = new Calculator();
    
    @Before
    public void setUp() throws Exception {
        calculator.clear();
    }

@Test
    public void testAdd() {
        calculator.add(2);
        calculator.add(3);
        assertEquals(5, calculator.getResult());
    }

@Test
    public void testSubstract() {
        calculator.add(10);
        calculator.substract(2);
        assertEquals(8, calculator.getResult());
    }

@Ignore("Multiply() Not yet implemented")
    @Test
    public void testMultiply() {
    }

@Test
    public void testDivide() {
        calculator.add(8);
        calculator.divide(2);
        assertEquals(4, calculator.getResult());
    }
}

第四步,运行测试代码:按照上述代码修改完毕后,我们在CalculatorTest类上点右键,选择“Run As à JUnit Test”来运行我们的测试,如下图所示:

运行结果如下:

进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表示“共进行了4个测试,其中1个测试被忽略,一个测试失败”

转载于:https://www.cnblogs.com/Ant-soldier/p/5042485.html

Junit单元测试学习笔记一相关推荐

  1. Junit单元测试学习笔记(一)

    l  使用方法 下载junit https://github.com/junit-team/junit/wiki/Download-and-Install 使用junit jar包 l 一个简单的te ...

  2. Go单元测试学习笔记 V1.0

    与你相识 博主介绍: – 本人是普通大学生一枚,每天钻研计算机技能,CSDN主要分享一些技术内容,因我常常去寻找资料,不经常能找到合适的,精品的,全面的内容,导致我花费了大量的时间,所以会将摸索的内容 ...

  3. Mybatis的学习笔记

    MyBatis Mybatis是一款非常优秀的持久层框架,学习的目的是要掌握精通. 那么今天我们就来学习一下这个优秀的框架知识! 此外,由于博主的水平的原因,文章的质量可能不会太高,请酌情观看.如果大 ...

  4. 七、Web服务器——Junit单元测试 反射 注解学习笔记

    今日内容 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值.2. 白盒测试:需要写代码的.关注程 ...

  5. SpringBoot学习笔记(16):单元测试

    SpringBoot学习笔记(16):单元测试 单元测试 单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小 ...

  6. spring学习笔记06-spring整合junit(出现的问题,解决的思路)

    spring学习笔记06-spring整合junit(出现的问题,解决的思路) 文章目录 spring学习笔记06-spring整合junit(出现的问题,解决的思路) 3.1测试类中的问题和解决思路 ...

  7. Android学习笔记 75. 单元测试

    Android学习笔记 Android 开发者基础知识 (Java) -- Google Developers 培训团队 文章目录 Android学习笔记 Android 开发者基础知识 (Java) ...

  8. Java基础学习总结(130)——使用WebSocket导致jUnit单元测试报No suitable default RequestUpgradeStrategy found错误的解决方法

    若在SpringMVC项目中使用了WebSocket,在运行jUnit单元测试时,可能会报如下错误: Caused by: java.lang.IllegalStateException: No su ...

  9. JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

最新文章

  1. 微服务架构之「 配置中心 」
  2. 【C语言】一文搞定如何计算结构体的大小----结构体内存对齐规则
  3. OCS 企业版图解详细部署
  4. (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用
  5. android ViewPager页面左右滑动切换
  6. python参数顺序 元组 字典_python学习之元组列表字典操作
  7. 聊聊spring cloud gateway的XForwardedHeadersFilter
  8. 创建弹出窗口的图片展示
  9. jQuery Mobile基础 学习笔记
  10. spring mvc 下载文件链接
  11. 一个存储过程,折腾了我半天
  12. 常见问题-瑞友天翼应用虚拟化系统安装之前需要做什么准备
  13. vb datagrid mysql_vb ADO 连接数据库,并绑定datagrid控件
  14. 基于leaflet地图对行政区进行维诺图区域划分
  15. Linux下3种常用的网络测速工具
  16. ”小糊涂“与美女网站的收费机制
  17. 看完了想点赞的文章!| 数据类好文推荐
  18. 重启数据库服务器后数据库无法连接的解决方法
  19. 科研热点|2023年IEEE Fellow入选者名单公布,中国学者占比1/4~
  20. XTF格式侧扫声呐数据格式解析

热门文章

  1. 美术干货:用Blender绘制low poly风格的游戏角色
  2. 《伊拉图斯死之主》:硬核游戏也有相对放松的游戏体验
  3. android data binding jetpack III 绑定一个方法
  4. 关于async 中return 和 return await 的差异
  5. ArcGIS 10.0 ArcGIS 9.3.1数据生成实验--个人地理数据库
  6. java13 InputStream,Reader
  7. ubuntu 配置url地址重定向协议
  8. linux启动lighttpd服务,如何使用Yum在CentOS和RHEL上安装Lighttpd Web服务器
  9. 7-37 图形卡片排序游戏 (40 分)
  10. 计算机专业毕业求职,计算机专业毕业生求职简历