Mockito异常测试实例

编程技术  /  houtizong 发布于 3年前   67

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;    }}

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客