使用EasyMock.createMock创建模拟时为什么junit测试失败?

时间:2012-11-09 02:46:23

标签: java unit-testing sockets junit easymock

在编写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

我想知道是否有人可以清除这种含糊之处。感谢。

3 个答案:

答案 0 :(得分:3)

你试图模拟一个具体的类(Socket不是一个接口),所以你可能需要做一些额外的工作。

假设您使用的是3.X版本的EasyMock,您可能需要添加类模拟所需的其他库:

  

cglib(2.2)和Objenesis(1.2)必须在类路径中才能执行类模拟

答案 1 :(得分:2)

答案 2 :(得分:2)

从EasyMock 3.0开始(当前版本为3.2),您可以模拟具体类,这样就不会出现此错误。