【问题标题】:Why junit test failed when creating mock with EasyMock.createMock?为什么使用 EasyMock.createMock 创建模拟时 junit 测试失败?
【发布时间】:2012-11-09 02:46:23
【问题描述】:

我在编写 junit 测试时遇到了 EasyMock 的意外行为。最后,我删除了几行代码,直到剩下一行createmock,看看发生了什么。

@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

我想知道是否有人可以消除这种歧义。谢谢。

【问题讨论】:

标签: java unit-testing sockets junit easymock


【解决方案1】:

您正在尝试模拟一个具体类(Socket 不是接口),因此您可能需要做一些额外的工作。

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

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

【讨论】:

  • 从 EasyMock 3.0(现在是 3.4)开始,您不需要指定 cglibObjenesis。模拟类就行了。
【解决方案2】:

【讨论】:

    【解决方案3】:

    从 EasyMock 3.0(当前版本为 3.2)开始,您可以模拟具体类,因此您现在不会收到此错误。

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多