当模拟调用时,我并不关心 - 几乎,我正在将一堆模拟迁移到真实世界的代码中,因为集成测试中的模拟有时非常愚蠢。 / p>
无论如何,我在这里有一个充满嘲笑设置的巨大课程 - 但我真正想要的是每个测试找出使用的模拟。 使用mockito,我可以得到它,我不知道,“记录”或打印或某事特定“何时”实际执行的东西?
答案 0 :(得分:4)
自Mockito 1.9.0起,您可以使用verboseLogging设置。
例如,这个:
@Test
public void testLogging() {
final List<?> mockList = mock(List.class, withSettings().verboseLogging());
when(mockList.size()).thenReturn(6);
mockList.size();
}
产地:
######在mock / spy上记录方法调用#1 ######## list.size();调用: - &gt;在soanswers.mockito.LogCalls.testLogging(LogCalls.java:35)有 返回:“0”(java.lang.Integer)
######在mock / spy上记录方法调用#2 ######## stubbed: - &gt;在soanswers.mockito.LogCalls.testLogging(LogCalls.java:35)list.size(); 调用: - &gt;在 soanswers.mockito.LogCalls.testLogging(LogCalls.java:37)有 返回:“6”(java.lang.Integer)
答案 1 :(得分:1)
我在mockito网页上发现了一个问题,表明这是可能的:http://code.google.com/p/mockito/issues/detail?id=148
嗨,我已在下一个分支准备了补丁。我很感激 关于任何需要改变的事情的反馈。
http://code.google.com/r/muratknecht-mockito-issue148/
API已达成一致:
Foo foo = mock(Foo.class,withSettings()。verboseLogging());
和
Foo foo = mock(Foo.class,withSettings()。callback(new RememberingListener()));
前者会将调用信息打印到std out。这是一个例子。 当然,这只是一个提案。位置信息( - &gt; at ...), 然而,只是听众得到的东西,因此不可能 更改时没有暴露位置及其字段。
######在mock / spy上记录方法调用#3 ######## foo.giveMeSomeString(“另一个字符串值”); - &GT;在org.mockitousage.debugging.VerboseLoggingOfInvocationsOnMockTest.usage(VerboseLoggingOfInvocationsOnMockTest.java:154) 将返回:&gt;一些返回值&lt; (java.lang.String)方法已经 存根。 - &GT;在 org.mockitousage.debugging.VerboseLoggingOfInvocationsOnMockTest.usage(VerboseLoggingOfInvocationsOnMockTest.java:149)
#使用级别测试是InvocationListenerCallbackTest和 VerboseLoggingOfInvocationsOnMockTest。你可能想要更近一点 看一下后者(见课堂评论)。与使用级别一样 对标准内容进行断言的测试 输出流,它有点乱。
我在我的一个测试中尝试过,它似乎做你想要的。您应该使用第一个看起来像这样的示例:
Foo foo = mock(Foo.class, withSettings().verboseLogging());