1、Junit 是什么?

  JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

  注意:Junit 测试也是程序员测试,即所谓的白盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能

2、Junit 能做什么?

  我们知道 Junit 是一个单元测试框架,那么使用 Junit 能让我们快速的完成单元测试。

  通常我们写完代码想要测试这段代码的正确性,那么必须新建一个类,然后创建一个 main() 方法,然后编写测试代码。如果需要测试的代码很多呢?那么要么就会建很多main() 方法来测试,要么将其全部写在一个 main() 方法里面。这也会大大的增加测试的复杂度,降低程序员的测试积极性。而 Junit 能很好的解决这个问题,简化单元测试,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。

3、Junit 的用法

  一、首先下载 Junit jar 包,这里给两个版本的百度云下载地址:

  ①、Junit 4.12版本    链接:http://pan.baidu.com/s/1c2cRqdM 密码:hfix

  ②、Junit 4.8 版本     链接:http://pan.baidu.com/s/1qY8WVGK 密码:ma2u

  

  二、下载完成之后,在项目中将 下载的 jar 包放进去,然后右键,Build--->Add Build Path  即可。

  

  如果你是用 eclipse 开发,也可以不用下载那些jar包,eclipse内部集成了,我们只需要引入即可:

    ①、选中项目,右键Build--->Add Library

      

    ②、弹出来的界面,选中 JUnit,点击 next

      

    ③、选中 Junit 的版本,一般我们都用 4.0 以上的。点击 Finish

      

  

  三、我们先看下面这个例子,看一下 Junit 的用法

  ①、编写代码(需要测试的类)

public class Calculator {/*** 传入两个参数,求和* @param a* @param b* @return*/public int add(int a,int b){return a+b;}/*** 传入两个参数,求差* @param a* @param b* @return*/public int sub(int a,int b){return a-b;}}

  ②、编写测试类

    一、不用Junit   

public class CalculatorTest {public static void main(String[] args) {Calculator c = new Calculator();//测试 add()方法int result = c.add(1, 2);if(result == 3){System.out.println("add()方法正确");}//测试 sub()方法int result2 = c.sub(2, 1);if(result2 == 1){System.out.println("sub()方法正确");}}
}

  那么我们可以看到,不用 Junit 只能写在 main()方法中,通过运行结果来判断测试结果是否正确。这里需要测试的只有两个方法,如果有很多方法,那么测试代码就会变得很混乱。

    二、使用 Junit(看不懂 Assert.assertEquals()方法没关系,可以自己写 if()语句来判断)

public class CalculatorTest {@Test//测试 add()方法public void testAdd(){Calculator c = new Calculator();int result = c.add(1, 2);Assert.assertEquals(result, 3);}@Test//测试 sub()方法public void testSub(){Calculator c = new Calculator();int result = c.sub(2, 1);Assert.assertEquals(result, 1);}}

  如何运行 Junit呢?鼠标放在需要测试的方法中,右键,Run As ---->JUnit Test

  

结果出现如下的绿色横条,则测试通过,红色横条,则测试失败

  

那么由上面可以看到,使用 Junit 不需要创建 main() 方法,而且每个测试方法一一对应,逻辑特别清晰。可能有读者会问,这样写代码量也并不会减少啊,那么你接着往下看:

首先介绍 Junit 的几种类似于 @Test 的注解:

  1.@Test: 测试方法

    a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
    b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过

  2.@Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码

  3.@Before: 每一个测试方法之前运行

  4.@After: 每一个测试方法之后运行

  5.@BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法

  6.@AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区分 @After

那么上面的例子,我们可以看到,每个 @Test 方法中都有 Calculator c = new Calculator();即类的实例化,那么我们可以将其放入到 @Before 中

public class CalculatorTest {Calculator c = null;@Beforepublic void testBeforeClass(){c = new Calculator();}@Test//测试 add()方法public void testAdd(){int result = c.add(1, 2);//Assert.assertEquals(result, 3);//等价于:if(result == 3){System.out.println("add()方法正确");}}@Test//测试 sub()方法public void testSub(){int result = c.sub(2, 1);//Assert.assertEquals(result, 1);//等价于:if(result == 1){System.out.println("sub()方法正确");}}}

  

同理:别的注解用法我们用一个类来看:

public class JunitTest {public JunitTest() {System.out.println("构造函数");}@BeforeClasspublic static void beforeClass(){System.out.println("@BeforeClass");}@Beforepublic void befor(){System.out.println("@Before");}@Testpublic void test(){System.out.println("@Test");}@Ignorepublic void ignore(){System.out.println("@Ignore");}@Afterpublic void after(){System.out.println("@After");}@AfterClasspublic static void afterClass(){System.out.println("@AfterClass");}
}

  结果为:

@BeforeClass
构造函数
@Before
@Test
@After
@AfterClass

  

注意:编写测试类的原则: 

    ①测试方法上必须使用@Test进行修饰

        ②测试方法必须使用public void 进行修饰,不能带任何的参数

        ③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开

        ④测试类所在的包名应该和被测试类所在的包名保持一致

        ⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖

        ⑥测试类使用Test作为类名的后缀(不是必须)

        ⑦测试方法使用test作为方法名的前缀(不是必须)

  

Junit 入门使用教程相关推荐

  1. Junit 入门级使用教程

    Junit插件介绍: 此介绍来自百度百科 JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最 ...

  2. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  3. MybatisMybatisPlusSpringboot之最全入门学习教程笔记

    目录 1 Mybatis概述 1.1 Mybatis概念 1.1.1 JDBC 缺点 1.1.2 Mybatis优化 1.2 快速入门 1.2.1 创建数据库 1.2.2 IDEA2021创建项目 1 ...

  4. 扫掠两条引导线_NX10 入门图文教程——异形台架(扫掠或者沿引导线扫掠)

    NX10 入门图文教程--异形台架(扫掠或者沿引导线扫掠) 块,长方体,由于这个体不是对称的,所以选择长方体完成,原点开始,设置参数 长方体,选择棱边端点,这个地方用长方体目的是上方的这个块与下面的块 ...

  5. MAYA 2022基础入门学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.41 GB |时长:4.5小时 包含 ...

  6. 3dmax Vray建筑可视化入门学习教程

    面向初学者的3Ds Max Vray最佳Archviz可视化课程 从安装到最终图像的一切都将从头开始教授,不需要任何经验 大小解压后:3.25G 时长4h 6m 1280X720 MP4 语言:英语+ ...

  7. Blender 3.0基础入门学习教程 Introduction to Blender 3.0

    成为Blender通才,通过这个基于项目的循序渐进课程学习所有主题的基础知识. 你会学到什么 教程获取:Blender 3.0基础入门学习教程 Introduction to Blender 3.0- ...

  8. Maya游戏角色绑定入门学习教程 Game Character Rigging for Beginners in Maya

    准备好开始为游戏制作自己的角色动画了吗? 你会学到什么 了解Maya的界面 优化并准备好你的模型,为游戏做准备 了解关节以及如何使用它们来构建健壮的角色骨骼,以便在任何游戏引擎中制作动画 了解IK和F ...

  9. 三维地形制作软件 World Machine 基础入门学习教程

    <World Machine课程>涵盖了你需要的一切,让你有一个坚实的基础来构建自己的高质量的电影或视频游戏地形. 你会学到什么 为渲染或游戏开发创建高分辨率.高细节的地形. 基于Worl ...

最新文章

  1. Centos6.5安装/运行/启动/登录docker
  2. xp安装mysql5.5.28_Windows XP系统安装MySQL5.5.28图解
  3. 适用于Linux / X11的Qt
  4. Spark性能相关参数配置详解
  5. Java的String.format可以静态导入
  6. java面向对象程序设计董小园_java面向对象程序设计(董小园版).doc
  7. MySQL 基础 ————事务与隔离级别总结
  8. LNMP安装了哪些软件?安装目录在哪?
  9. 千字搞定数据产品选型!报表、BI、大数据平台、中台都在这了
  10. canvas节点无法导出图片_开源小程序,练手必备,仿“美图秀秀”处理图片。
  11. 使用Javascript在Leetcode中的ACM模式下无法获取输入数据的问题
  12. tamtam-nuget-imageserver
  13. win10c盘扩容_Win10磁盘分区工具-无损分区助手
  14. 鉴源实验室丨TARA分析方法论
  15. 好歌推荐 绝对经典(中外结合)
  16. RuntimeError: Cannot re-initialize CUDA in forked subprocess. 一个奇怪bug的奇妙解决方法
  17. 2022 年牛客多校第五场补题记录
  18. 前端特效demo | 一起围观 10 种创意时钟 1
  19. 一篇高中生都能看懂的MySQL入门博客(长文)
  20. 职业操盘手的止损法则

热门文章

  1. 手机也能开机启动(值得研究一下啊!在索尼爱立信上面发现的)
  2. js等待ajax执行完,js等待方法执行完再执行
  3. 深度linux_工程师深度:学通Linux内核(含详细代码)
  4. 【连载】《linux入门很简单》电子版——作者:刘金鹏(1.4G大叔)
  5. OpenGL坐标系转换
  6. 不过是从头再来(下)
  7. win10sas安装教程_炫龙炫锋AS3笔记本U盘重装win10系统教程
  8. 【安卓开发系列 -- 系统开发】搭建云手机容器环境 (基于 openvmi)
  9. 学习java的第五天。。。(互关)
  10. c#桌面应用程序如何添加弹出式广告