我使用 EasyMock 为我的代码编写了一个测试用例来检查 BusinessServiceException。但是测试用例失败了(不是错误)。任何人都可以告诉我为什么会发生这种情况。这就是这个测试用例失败的原因。
Java 代码:
public class ListHelper {
@Resource(name = "shoppingListService")
private ShoppingListService shoppingListService;
public void setShoppingListService(ShoppingListService shoppingListService) {
this.shoppingListService = shoppingListService;
}
Public Map<String, String> getShoppingListCount(String partnerId, String userId){
// Shopping List Section
Map<String, String> shoppingListDetails = null;
try {
shoppingListDetails = shoppingListService.getShoppingListTotal(partnerId, userId);
} catch (BusinessServiceException e) {
}
return shoppingListDetails;
}
EasyMock 测试:
@Test(expected= BusinessServiceException.class)
public void testGetShoppingListCountBusinessServiceException() throws BusinessServiceException{
EasyMock.expect(shoppingListService.getShoppingListTotal("p120-90", "2012")).andThrow(new BusinessServiceException("Failure"));
EasyMock.replay(shoppingListService);
try{
listHelper.getShoppingListCount("p120-90", "2012");
}finally{
EasyMock.verify(shoppingListService);
}
}
最佳答案
- 您的方法不会引发异常,因为您将其丢弃在空的 catch block 中。
您应该将方法更改为如下所示:
public Map<String, String> getShoppingListCount(String partnerId, String userId) throws BusinessServiceException {
// Shopping List Section
Map<String, String> shoppingListDetails = shoppingListService.getShoppingListTotal(partnerId, userId); // do not catch the possible exception
return shoppingListDetails;
}
- 您的测试代码不会将模拟传递给被测类。
测试可能如下所示:
@Test(expected= BusinessServiceException.class)
public void testGetShoppingListCountBusinessServiceException() throws BusinessServiceException {
EasyMock.expect(shoppingListService.getShoppingListTotal("p120-90", "2012")).andThrow(new BusinessServiceException("Failure"));
EasyMock.replay(shoppingListService);
// pass the mock!
ListHelper listHelper = new ListHelper(shoppingListService);
try{
listHelper.getShoppingListCount("p120-90", "2012");
}finally{
EasyMock.verify(shoppingListService);
}
}
关于java - EasyMock 测试用例在检查异常时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757899/