我使用EasyMock在测试用例中创建模拟类。
expect(entity.getType()).andReturn("string");
类型属于String数据类型。在我的开发环境中,它工作正常。但如果我转移到我的服务器并进行构建,它将失败,并出现以下错误:
String
java.lang.IllegalStateException: incompatible return value type
我不知道为什么它在服务器上失败,而在我的开发机器上执行。开发EasyMock版本:2.5.2
wooyq4lh1#
我也有同样的问题。我在EasyMock中有一个部分mock,但是忘记为我想要设置期望值的方法调用addMockedMethod。错误信息和上面的一样,我得说这有点误导。
EasyMock
addMockedMethod
jtjikinw2#
在我的例子中,方法是final,我在该方法上调用了expect,因此EasyMock无法模拟该方法,因此没有记录方法调用。
final
expect
gwo2fgha3#
确保您的entity对象不是简单的POJO(例如new Entity()),并且它是使用EasyMock的createMock()方法创建的。
entity
new Entity()
createMock()
w8f9ii694#
对我来说,我必须记得在使用过一次之后对它调用reset(...),或者我(奇怪地)第二次对它调用expect时收到这个错误消息。
yhxst69z5#
如果有人在尝试模拟一个类的toString()方法的行为时遇到这个错误,例如expect(entity.toString()).andReturn("string");,EasyMock将在测试中调用该行的toString()方法的特殊版本,并且不会修改测试代码中该方法的预期行为。()行为,如果您只是删除尝试模拟调用的行,您的测试仍然可能通过。PowerMock似乎没有提供任何解决方案,因为它的@PrepareForTest没有改变这种行为。
toString()
expect(entity.toString()).andReturn("string");
@PrepareForTest
5条答案
按热度按时间wooyq4lh1#
我也有同样的问题。
我在
EasyMock
中有一个部分mock,但是忘记为我想要设置期望值的方法调用addMockedMethod
。错误信息和上面的一样,我得说这有点误导。
jtjikinw2#
在我的例子中,方法是
final
,我在该方法上调用了expect
,因此EasyMock
无法模拟该方法,因此没有记录方法调用。gwo2fgha3#
确保您的
entity
对象不是简单的POJO(例如new Entity()
),并且它是使用EasyMock的createMock()
方法创建的。w8f9ii694#
对我来说,我必须记得在使用过一次之后对它调用reset(...),或者我(奇怪地)第二次对它调用expect时收到这个错误消息。
yhxst69z5#
如果有人在尝试模拟一个类的
toString()
方法的行为时遇到这个错误,例如expect(entity.toString()).andReturn("string");
,EasyMock将在测试中调用该行的toString()
方法的特殊版本,并且不会修改测试代码中该方法的预期行为。()行为,如果您只是删除尝试模拟调用的行,您的测试仍然可能通过。PowerMock似乎没有提供任何解决方案,因为它的@PrepareForTest
没有改变这种行为。