Junit测试工具

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 的注解:

  [email protected]: 测试方法

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

  [email protected]: 被忽略的测试方法:加上之后,暂时不运行此段代码

  [email protected]: 每一个测试方法之前运行

  [email protected]: 每一个测试方法之后运行

  [email protected]: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法

  [email protected]: 方法必须要是静态方法(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

时间: 2024-10-28 22:15:30

Junit测试工具的相关文章

JUnit测试工具在项目中的用法

0:33 2013/6/26 三大框架整合时为什么要对项目进行junit测试: |__目的是测试配置文件对不对,能跑通就可以进行开发了 具体测试步骤: |__1.对hibernate进行测试 配置hibernate.cfg.xml public class TestHibernate { @Test public void save(){ Configuration configuration = new Configuration(); //加载类路径下的hibernate.cfg.xml c

单元测试实战 - Junit测试

一.对加法函数进行测试 1.实例化被测单元(方法):类名 实例名=new 类名([参数]) 2.调用被测单元,对比预期值和输出值(实际值): 在没有junit测试工具的情况下,我们要进行如下的测试代码编写过程: 二.利用Junit进行单元测试 Junit是一款专门用于java语言的代码的单元测试工具:是一套基于java的测试框架,目前有两个版本:Junit3,Junit4.Junit中最常用的两个测试方法是: assertEquals(expect,actual);用于非数组型的数据的比较:as

JUnit测试模块使用

JUnit简介 JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 1.选择开发工具 我使用的是Eclipse作为开发工具,里面自带JUnit测试工具 没有的小伙伴可以到这里下载 2.单元测试 1)编写被测试类 首先得写一个被测试的类,这里我写了一个简单的Calcula

谈谈单元测试之(三):测试工具 JUnit 4

前言 上一篇文章<测试工具 JUnit 3>简单的讨论了 JUnit 3 的使用以及内部的方法.这篇文章将会在 JUnit 3 的基础上,讨论一下 JUnit 4 的新特性.同时,与 JUnit 3 做一个简单的对比.那么,废话就不多说了,直接进入正题. 介绍 JUnit 4.x 是利用了 Java 5 的特性(Annotation)的优势,使得测试比起 3.x 版本更加的方便简单,JUnit 4.x 不是旧版本的简单升级,它是一个全新的框架,整个框架的包结构已经彻底改变,但 4.x 版本仍然

谈谈单元测试之(二):测试工具 JUnit 3

前言 上一篇文章<为什么要进行烦人的单元测试?>讨论了一下现阶段软件开发中,程序员们测试情况的现状.这篇文章中,我打算介绍一下单元测试的工具(插件),并且推荐大家以后在开发中,真正的用上单元测试,用好单元测试. 说明 这篇文章的主题,主要是介绍一下 JUnit 3,虽然 JUnit 3 已经不推荐使用了,但它也曾是风靡一时.这里旨在讨论一下 JUnit 3 的使用,以及它的内部构造,就当是为下一篇文章介绍 JUnit 4 做铺垫吧.之前已经把单元测试的重要性都讲出来了,这里就不再赘述了,直接进

12个强大的Web服务测试工具

在过去的几年中,web服务或API的普及和使用有所增加. web服务或API是程序或软件组件的集合,可以帮助应用程序进行交互或通过形成其他应用程序或服务器之间的连接执行一些进程/事务处理.基本上有两种类型的web服务——基于互联网协议,REST和SOAP推动数据和信息的通讯. 由于这些web服务暴露于网络并且分布于不同的网络,所以它们很容易受到风险和安全威胁,从而影响基于它们的进程.因此,web服务或API测试非常有必要,可以确保它们执行正确并正确地响应查询. 市场上有不少商业和开源的测试工具可

【Java 语言生态篇】Junit 测试单元

01 概述 JUnit是一个由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是白盒测试.JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具.[1] JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).它包括以下特性: 1.用于测试期望结果的断言(Asser

使用Junit等工具进行单元测试

一.类的定义:类是同一事物的总称,类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类. 二.查找Junit工具的用法: 第一步,首先新建一个项目,我们编写一个类,这是一个能够简单实现一些功能的类,然后对这些功能进行单体测试. 第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键,点“属性”,在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在右边点击“Add Library…”按钮,如下图所示:

谈谈单元测试之(四):测试工具 TestNG

前言 上一篇文章<测试工具 JUnit 4>中提到了 JUnit 4,并对 JUnit 4 做了简单的讨论,这篇文章我们将要围绕另一款测试工具讨论 -- TestNG.其实,这篇文章应该写在<测试工具 JUnit 3>之后,和<测试工具 JUnit 4>之前,为什么这么说呢? 那是因为,TestNG 是在 JUnit 3 之后出来了,而 JUnit 4 是在 TestNG 推出之后,综合 JUnit 3 的优点,并且借鉴了 TestNG 的优势,才推出的.但是,考虑到,