【问题标题】:What is mockito and why is it screwing with my JUNIT tests?什么是 mockito,为什么它会影响我的 JUNIT 测试?
【发布时间】:2012-03-19 15:12:47
【问题描述】:

Mockito 不断拦截我在 DAO 中创建的函数并随机返回 0。我希望该函数实际运行。我在哪里可以配置这个模拟野兽来不理会这个功能?

调试器跳到这里而不是进入我的spring dao:

 public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
        throws Throwable {
    if (objectMethodsGuru.isEqualsMethod(method)) {
        return proxy == args[0];
    } else if (objectMethodsGuru.isHashCodeMethod(method)) {
        return hashCodeForMock(proxy);
    }

    MockitoMethodProxy mockitoMethodProxy = createMockitoMethodProxy(methodProxy);
    cglibHacker.setMockitoNamingPolicy(mockitoMethodProxy);

    MockitoMethod mockitoMethod = createMockitoMethod(method);

    FilteredCGLIBProxyRealMethod realMethod = new FilteredCGLIBProxyRealMethod(mockitoMethodProxy);
    Invocation invocation = new Invocation(proxy, mockitoMethod, args, SequenceNumber.next(), realMethod);
    return handler.handle(invocation);
}

【问题讨论】:

  • 欢迎您搞笑,但首先请确保正确提问。我们需要查看被测试的方法,测试方法和执行结果(如果有)。当然,删除任何可能暴露业务逻辑的东西。
  • 该方法只是查询数据库,与 dao 类中的任何其他方法一样。我的测试方法是运行其他人对调用 mockit 拦截的函数的函数进行的 Junit 测试。我只想知道 mockit 是什么以及它是如何/从哪里配置的。我不知道要添加什么代码,因为我不知道 mockit 是如何工作的以及它的配置位置。
  • 其实从看到代码我觉得你面对的是Mockito,code.google.com/p/mockito,它是最好的java mocking 框架之一。我建议你学会爱它,因为它可以让你的生活(和你的测试)更轻松。

标签: java spring junit mockito


【解决方案1】:

什么是模仿?

MockIto(和JMockIt,因为我回答了原始问题)是模拟 API,它们允许开发人员编写与应用程序的其余部分或其他外部资源(例如数据库)隔离的测试。

为什么我的 JUNIT 测试搞砸了?

因为曾经编写过测试的人决定他们不希望这个测试进入数据库。所以他们使用 mockito 来防止这种情况发生。

我在哪里可以配置这个模拟野兽来不理会这个功能?

找到编写此测试(或您当前测试所基于的测试)的开发人员。与他们一起了解模拟框架。

【讨论】:

  • “和 JMockIt 作为最初询问的问题” OP 写了“mockit”,代码使用了“mockito”,那么您认为 OP 为什么会询问“jmockit”?我在这里想念什么?
猜你喜欢
  • 1970-01-01
  • 2016-12-09
  • 2023-03-12
  • 2011-09-29
  • 2017-05-07
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多