繁体   English   中英

Java,Mockito-如何找出调用了哪些模拟?

[英]java, mockito - how can i find out which mocks are called?

我并不在乎何时调用该模拟-差不多,我正在将一堆模拟迁移到真实世界的代码中,因为集成测试中的模拟有时非常愚蠢。

无论如何,这里我有一个巨大的类,其中包含完整的模拟设置-但我真正想要的是每个测试都可以找出使用了哪些模拟。

使用Mockito,我是否可以在实际执行特定的“何时”时获取它,我不知道它是“日志”还是打印内容?

从Mockito 1.9.0开始,您可以使用verboseLogging设置。

例如,这:

@Test
public void testLogging() {
  final List<?> mockList = mock(List.class, withSettings().verboseLogging());
  when(mockList.size()).thenReturn(6);

  mockList.size();
}

产生:

######模拟/间谍的日志记录方法调用#1 ######## list.size(); 调用:->在

soanswers.mockito.LogCalls.testLogging(LogCalls.java:35)已返回:“ 0”(java.lang.Integer)

#/ ####模拟/间谍########的日志记录方法调用#2:-> at

soanswers.mockito.LogCalls.testLogging(LogCalls.java:35)list.size(); 在soanswers.mockito.LogCalls.testLogging(LogCalls.java:37)处调用->已返回:“ 6”(java.lang.Integer)

我在模仿网页上发现了一个问题,表明有可能这样做: http : //code.google.com/p/mockito/issues/detail? id=148

嗨,我已经在以下分支中准备了一个补丁。 对于任何需要更改的反馈,我将不胜感激。

http://code.google.com/r/muratknecht-mockito-issue148/

API已达成协议:

Foo foo =模拟(Foo.class,withSettings()。verboseLogging());

Foo foo =模拟(Foo.class,withSettings()。callback(new RememberingListener()));

前者将打印调用信息以将其输出。 这里举个例子。 当然,这只是一个建议。 但是,位置信息(位于...处的->只是听者得到的),因此,如果不公开位置及其字段,就无法更改位置信息。

######模拟/间谍上的日志记录方法调用#3 ######## foo.giveMeSomeString(“另一个字符串值”); ->在

org.mockitousage.debugging.VerboseLoggingOfInvocationsOnMockTest.usage(VerboseLoggingOfInvocationsOnMockTest.java:154)将返回:>一些返回值<(java.lang.String)方法已存根。 -> org.mockitousage.debugging.VerboseLoggingOfInvocationsOnMockTest.usage(VerboseLoggingOfInvocationsOnMockTest.java:149)

使用级别的测试是InvocationListenerCallbackTest和VerboseLoggingOfInvocationsOnMockTest。 您可能需要仔细研究后者(请参阅课程注释)。 与对标准输出流的内容进行断言的使用级别测试一样,它有点混乱。

我在一项测试中尝试了它,它似乎可以完成您想要的。 您应该使用第一个示例,如下所示:

Foo foo = mock(Foo.class, withSettings().verboseLogging());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM