博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Junit测试工具
阅读量:5100 次
发布时间:2019-06-13

本文共 4415 字,大约阅读时间需要 14 分钟。

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 包

  二、下载完成之后,在项目中将 下载的 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;         @Before    public 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("构造函数");    }     @BeforeClass    public static void beforeClass(){        System.out.println("@BeforeClass");    }         @Before    public void befor(){        System.out.println("@Before");    }         @Test    public void test(){        System.out.println("@Test");    }         @Ignore    public void ignore(){        System.out.println("@Ignore");    }         @After    public void after(){        System.out.println("@After");    }         @AfterClass    public static void afterClass(){        System.out.println("@AfterClass");    }}

 

 

  结果为:

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

 

 

  

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

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

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

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

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

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

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

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

小结

JUnit就是一个可能帮助你在开发Java程序时进行测试的框架,在之后的大作业中,我们有用到JUnit进行测试,主要是单元与集成测试来观察我们的编写的代码是否满足我们的需求以及是否可以正确运行

  

转载于:https://www.cnblogs.com/abcd123asa/p/10976453.html

你可能感兴趣的文章
创建Docker私有仓库
查看>>
前端开发利器 - WebStorm
查看>>
[原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解...
查看>>
上传图片并实现本地预览(1)
查看>>
C# 下载
查看>>
windows 系统新建 vue 项目的坑
查看>>
c#线程1
查看>>
使用docker部署skywalking
查看>>
如何设计自动化测试的代码结构
查看>>
样本打散后计算单特征 NDCG
查看>>
el表达式
查看>>
453. Minimum Moves to Equal Array Elements 一次改2个数,变成统一的
查看>>
过年要回家,随手写了个12306买票的脚本,成功抢到几张卧铺.
查看>>
Linux关机命令详解
查看>>
【基础最小生成树】Jungle Roads
查看>>
HDU 1087 Super Jumping! Jumping! Jumping!(DP)
查看>>
Spring Boot 依赖包讲解
查看>>
C++类成员空间分配和虚函数表
查看>>
关于微信隐藏分享按钮的心得
查看>>
Weave 网络结构分析 - 每天5分钟玩转 Docker 容器技术(64)
查看>>