java - EasyMock 测试用例在检查异常时失败

标签 java easymock

我使用 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/

相关文章:

java - 我该如何使用 EasyMock 的 @Mock 注解(3.2 版本新增)?

java - 将多参数 matches() 从 EasyMock 1 ArgumentsMatcher 转换为 EasyMock 2/3 IArgumentMatcher

java - 如何使用easymock进行hashmap

java - 为我的 API 的每个用户创建一个线程是否可以很好地扩展?

java - 实体异常映射中的重复列

java - Maven Release模式

java - EasyMock 不区分子类

java - EasyMock 期望方法在同一测试中返回多个不同的对象

通过 Selenium 运行测试用例时出现 java.lang.NullPointerException

java - 托普利茨矩阵初始化