簡體   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