当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Mockito异常测试实例

发表于: 2014-01-03   作者:bijian1013   来源:转载   浏览:
摘要: Mockito异常测试实例: package com.bijian.study; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.Assert; import org.junit.Test; import org.mockito.

Mockito异常测试实例:

package com.bijian.study;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.Assert;
import org.junit.Test;

import org.mockito.Mockito;

public class MockitoDemo {

    @Test
    public void mockitoTest() throws Exception {
        
        Service service = new Service();
        Dao dao = mock(Dao.class);// 相当于 new一个dao的模拟类
        service.setDao(dao);
        when(dao.update("1", "2")).thenReturn(2);
        Assert.assertEquals(2, service.update("1", "2"));

        // 方法的参数可以匹配任意值,Mockito.anyXXX() 和任意类 Mockito.any(clazz)
        when(dao.update(Mockito.anyString(), Mockito.any(String.class))).thenReturn(3);
        // 不能将确定值和模糊值混搭,这样会报错
        // when(dao.update("3", Mockito.any(String.class))).thenReturn(3);
        Assert.assertEquals(3, service.update("3", "4"));

        // 下面模拟抛异常
        when(dao.update("3", "4")).thenThrow(new RuntimeException());
        Assert.assertEquals(-1, service.update("3", "4"));

        // void方法抛异常
        Mockito.doThrow(new RuntimeException("测试")).when(dao).voidTest();
        try {
            service.voidTest();
        } catch (Exception e) {
            Assert.assertEquals("测试", e.getMessage());
        }

        // 不能模拟抛Exception类
        //when(dao.update("3", "4")).thenThrow(new Exception());

        // 同一方法不能多次模拟抛异常
        //when(dao.update("3", "4")).thenThrow(new NullPointerException());
        //Assert.assertEquals(-1, service.update("3", "4"));
    }
}

class Service {
    private Dao dao;

    public void setDao(Dao dao) {
        this.dao = dao;
    }

    public void voidTest() {
        dao.voidTest();
    }

    public int update(String a, String b) {
        int i = 0;
        try {
            i = dao.update(a, b);
        } catch (Exception e) {
            i = -1;
        }
        return i;
    }
}

class Dao {
    public void voidTest() {
    }

    public int update(String a, String b) {
        return 1;
    }
}

 

Mockito异常测试实例

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
准备 本文需要Java和Junit基础,可参考:使用Junit进行单元测试教程,Java程序设计简介。 项目地址
为什么需要Mock 测试驱动的开发(Test Driven Design, TDD)要求我们先写单元测试,再写实现代码。在
一 介绍 java ee项目在某些情况下难免会产生一些异常,如果某些异常我们没有进行处理,那么将会抛给
(一):黑盒测试 黑盒测试是指对程序功能性的测试,也就是不考虑内部的具体实现,仅仅就程序的功能
隔了两个月,又重新开始将j2me转成android,7月8月,我先经过期末考,又到一家信息科技公司开发andro
web.xml 文件为java web程序的一个基础性描述文件,主要用于描述URL与Servlet如何进行映射,以及映
本文的目的是对mymysql进行单元测试和性能测试 准备工作: 1 go get github.com/ziutek/mymysql/thr
我们以前要进行单元测试,必须先得到ApplicationContext对象,再通过它得到业务对象,非常麻烦,重复代
隔了两个月,又重新开始将j2me转成android,7月8月,我先经过期末考,又到一家信息科技公司开发andro
(一):黑盒测试 黑盒测试是指对程序功能性的测试,也就是不考虑内部的具体实现,仅仅就程序的功能
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号