在编写junit测试时,我遇到了EasyMock的意外行为。最后,我删除了一些代码行,直到有一行创建模拟,看看发生了什么。
@Test
public void testSimple() throws Exception {
Socket socket = EasyMock.createMock(Socket.class);
}
此junit测试会生成错误:
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.052 sec
当我只有正常的实例化时,情况并非如此:
@Test
public void testSimple() throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
}
这个junit测试看起来很满意:
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.047 sec
我想知道是否有人可以清除这种含糊之处。感谢。
答案 0 :(得分:3)
你试图模拟一个具体的类(Socket不是一个接口),所以你可能需要做一些额外的工作。
假设您使用的是3.X版本的EasyMock,您可能需要添加类模拟所需的其他库:
cglib(2.2)和Objenesis(1.2)必须在类路径中才能执行类模拟
答案 1 :(得分:2)
如果您正在模拟具体类,则需要使用EasyMock类扩展
http://easymock.org/EasyMock2_2_2_ClassExtension_Documentation.html
链接显示了如何。 http://helpdesk.objects.com.au/java/how-do-i-mock-a-concrete-class-using-easymock
答案 2 :(得分:2)
从EasyMock 3.0开始(当前版本为3.2),您可以模拟具体类,这样就不会出现此错误。