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

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

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号