[英]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:-> atsoanswers.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.