• EasyMock 常见异常


    1.

    java.lang.IllegalStateException: calling verify is not allowed in record state

    含义:不允许在记录状态(record state)调用verify方法。

    发生场景:不小心在调用EasyMock.replay(mockObj)之前,调用了EasyMock.verify(mockObj);

    2.

    java.lang.AssertionError:
    Unexpected method call IDao.search(com.unittest.easymock.iargumentmatchertest.TestEntity@578486a3):
    IDao.search(com.unittest.easymock.iargumentmatchertest.TestEntity@6ebc05a6): expected: 1, actual: 0

    含义:从异常来看,search方法的参数的期待值和实际值不是同一个对象。

    发生场景:在比较方法的入参的时候,一般是使用方法的equals方法来比较对象,如果equals方法没有重写而只是比较是否是同一个对象引用的话,很容易出现这种问题。

    例:

        public void testEntity() {
            ServiceClass serviceClass = new ServiceClass();
            IDao idao = EasyMock.createMock(IDao.class);
            serviceClass.setIdao(idao);
    
            TestEntity testEntity = new TestEntity();
            TestEntity testEntity2 = new TestEntity();
            EasyMock.expect(idao.search(testEntity)).andReturn(2);
    
            EasyMock.replay(idao);
    
            serviceClass.search(testEntity2);
    
            EasyMock.verify(idao);
        }

    解决方法:

    1.重写equals方法

    2.使用EasyMock的Argument Matchers提供的或自定义的方法来比较方法入参。

  • 相关阅读:
    javaBean实体包区分
    先后天八卦配太极图
    mysql表连接
    关于解决问题方法论的思考
    Python基础综合练习
    大数据概述
    编译原理
    词法分析
    组合数据类型练习
    词法分析器实验报告
  • 原文地址:https://www.cnblogs.com/niaomingjian/p/5437920.html
Copyright © 2020-2023  润新知