专栏首页Danny的专栏三分钟学会JUnit单元测试

三分钟学会JUnit单元测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/48756845

  之前在做.net项目的时候,如果需要测试,可以建立一个单元测试项目:

  在java中也一样,进行单元测试的时候,可以用JUnit进行测试。

  下面用一个超级简单的小例子,来一起学习一下如何使用JUnit进行单元测试。

1、引入jar包


  在使用JUnit之前,要先引入Junit的jar包

2、被测试的方法:


  假如UserManager类中的三个方法需要被测试,这里列举出UserManager类中需要被测试的三个方法:

public class UserManager {
    public void add(String username) {
        System.out.println("add----"+username);
    }

    public void del(String username) {
        System.out.println("del----"+username);
    }

    public String findUserById(String userId){
        return "Danny";
    }
}

3、编写单元测试类


  建立用来测试UserManager中方法的测试类UserManagerTest.java:

import junit.framework.TestCase;

public class UserManagerTest extends TestCase {
    public void testAdd() {
        UserManager usermanager = new UserManager();
        usermanager.add("Danny");
    }

    public void testDel() {
        UserManager usermanager = new UserManager();
        usermanager.del("Danny");
    }

    public void testFindUserById() {
        UserManager usermanager = new UserManager();
        String username = usermanager.findUserById("0001");
        System.out.println(username);
    }
}

  注意:单元测试类必须要继承 junit.framework.TestCase 类。

4、进行单元测试


  这时,一个单元测试就建好了( 真的 so easy 有木有?),右键点击被测试方法的方法名 → Run As → JUnit Test,即可执行测试,比如对上面的testAdd方法测试的效果如下:

  左上方有表示成功执行的绿色进度条、执行过程中有0个错误和0个失败、执行时间为0.007秒等测试信息。

  到此,您就可以通过上述信息进行判断您的模块是否正确,性能是否还可以再优化,也可以用通过调试、打印等方式来辅助观察测试的执行情况。

扩展——JUnit断言


  JUnit断言,听起来很高大上,其实就是JUnit为我们提供的几个函数,用来辅助说明被测方法是否达到了预期效果。

  比如JUnit中的一个断言assertEquals(expected,actual),expectd表示测试结果的期望值,actual表示测试结果的实际值。 用在上述测试类UserManagerTest中的testFindUserById()方法中的情景如下:

public void testFindUserById() {
        UserManager usermanager = new UserManager();
        String actual= usermanager.findUserById("0001");
        String expected="Danny";
        this.assertEquals(expected,actual);//断言
    }

  这里的预期值写的是”Danny”,实际测试效果为测试成功:

  当把预期值改为”DannyHoo”,实际测试效果为测试失败:

  JUnit还为我们提供了多种断言,比如验证测试结果是否为null的断言——assertNull(object)、验证测试结果是否为true的断言——assertTrue(condition)等等。如果想了解更多,可以参考JUnit的帮助文档,这里不再一 一列举。

温馨提示


  为了使项目比较清晰、规范,可以将单元测试的类单独放在一个source folder或者一个包中,比如这种结构:

【 转载请注明出处——胡玉洋《三分钟学会JUnit单元测试》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【SpringDataJPA】——SpringDataJPA入门实例

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 设计模式奠基石——UML关系转化为代码

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 【SSH快速进阶】——struts2的模型驱动—ModelDriven

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 适配器模式

    用户发送请求,然后DispatcherServlet通过HandlerMapping映射出对应的Handler以及相关的Interceptors,将这二者绑定到...

    Howl
  • java 工厂模式变形的多种应用

     工厂模式在项目开发中是使用效率非常高的,意思就是说定义一个用于创建对象的接口,让子类去决定实例化哪一个类。

    用户5166556
  • App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块。本篇文章就尝试为使用gra...

    用户1172465
  • 那些年,我们见过的Java服务端“问题”

    明代著名的心学集大成者王阳明先生在《传习录》中有云:“道无精粗,人之所见有精粗。如这一间房,人初进来,只见一个大规模如此。处久,便柱壁之类,一一看得明白。再久,...

    macrozheng
  • Dora.Interception,为.NET Core度身打造的AOP框架 [5]:轻松地实现与其他AOP框架的整合

    这里所谓的与第三方AOP框架的整合不是说改变Dora.Interception现有的编程,而是恰好相反,即在不改变现有编程模式下采用第三方AOP框架或者自行实现...

    蒋金楠
  • SpringMVC 中的Annotated Controllers

    上面透漏一下信息:是一个GET响应 查找web下的index模版,通过model将数据传递给模版引擎渲染

    大话swift
  • 六大设计原则(C#)

    如果一个模块需要修改,它肯定是有原因的,除此原因之外,如果遇到了其他情况,还需要对此模块做出修改的话,那么就说这个模块就兼具多个职责。举个栗子:

    梁规晓

扫码关注云+社区

领取腾讯云代金券