首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Mockito错误测试实例

2014-01-05 
Mockito异常测试实例package com.bijian.studyimport static org.mockito.Mockito.mockimport static or

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

?

热点排行