簡體   English   中英

為什么在嘲諷對象上使用的方法不顯示println?

[英]Why method used at mockito object don't show println?

所以我想打印一些字符串。 當我做:

MyClass myClass = new MyClass();
myClass.myFunction(myList, path);

它顯示了我:

somepath/ABC
somepath/DEF
somepath/PQR

但是當我這樣做時:

MyClass myClass = mock(MyClass.class);
myClass.myFunction(myList, path);

它什么都沒顯示。 是否可以在模擬對象上返回這些字符串?

由於使用了模擬對象,因此可以模擬其myFunction方法的行為,如下所示:

when(myClass.myFunction()).thenReturn("somepath/ABC");

請注意,僅當您的方法的返回類型為String ,此方法才會編譯。

如果您的方法return-type為void ,則您不應模擬返回值,而應調用真實方法:

Mockito.doCallRealMethod().when(myClass).myFunction();

它將在原始方法實現內執行println語句。 但是,這種方法有一些陷阱-如果該方法使用某些類成員,則有可能獲得NullPointerException (或其他異常),對於模擬對象,該成員將為null ,除非您將它們設置為引用其他模擬對象。

當在模擬對象上調用特定方法時,可以使用以下代碼返回一些信息:

when(myClass.myFunction()).thenReturn("somepath/ABC");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM