【发布时间】:2017-04-11 13:33:37
【问题描述】:
我正在编写单元测试来寻找我所在位置附近的银行。 我嘲笑了这个班级并试图调用这些方法。 但是,控制不会去执行它的方法。 下面是单元测试用例。
@Test
public void testFindBanksByGeo() {
String spatialLocation = "45.36134,14.84400";
String Address = "Test Address";
String spatialLocation2 = "18.04706,38.78501";
// 'SearchClass' is class where 'target' method resides
SearchClass searchClass = Mockito.mock(SearchClass.class);
BankEntity bank = Mockito.mock(BankEntity.class);
// 'findAddressFromGeoLocation' and 'getGeo_location' to be mocked. They are called within 'target' method
when(searchClass.findAddressFromGeoLocation(anyString())).thenReturn(Address);
when(bank.getGeo_location()).thenReturn(spatialLocation2);
// 'writeResultInJson' is void method. so needed to 'spy' 'SearchClass'
SearchClass spy = Mockito.spy(SearchClass.class);
Mockito.doNothing().when(spy).writeResultInJson(anyObject(), anyString());
//This is test target method called. **Issue is control is not going into this method**
SearchedBanksEntity searchBanksEntity = searchClass.findNearbyBanksByGeoLocation(spatialLocation, 500);
assertNull(searchBankEntity);
}
我试过的也是调用真实方法就可以了,
Mockito.when(searchClass.findNearbyBanksByGeoLocation(anyString(), anyDouble())).thenCallRealMethod();
这调用了真正的方法,但我上面模拟的方法却像真正的方法一样执行。意味着“模拟方法”没有返回我要求他们返回的内容。
那么,我在这里做错了什么? 为什么方法没有执行?
【问题讨论】:
-
searchClass是一个模拟,你想要达到的目标很奇怪 -
感谢您的评论。但我是 Mockito 的新手。只是说它奇怪不会帮助我成长。而是提一下出了什么问题,以便用户可以对其进行处理。
-
你能分享你正在为 junit 编写的代码的相关部分吗?
标签: java unit-testing junit mocking mockito