簡體   English   中英

Java Junit / Mockito中的單元測試void方法

[英]Unit testing void methods in Java Junit/Mockito

我看到類似的問題,但未按照我的要求正確回答。

我有void方法,它根據其他一些DB值對Model對象進行了一些更改,然后將其再次保存回DB。

偽代碼:

User{
List<Mark> marks;
String fullName;
int grade;
date dob;
}

邏輯是通過調用另一個服務來應用一些公式來更新用戶等級。

這是我設計的測試方式:

我可以給User對象添加標記作為輸入。 我將通過提供公式來根據標記確定等級來模擬服務。 我想測試最終的User對象是否與保存之前期望的匹配。

我知道我可以將其移動到單獨的方法並返回對象,以便可以進行單元測試。 我在這里尋找的是是否有任何方法可以測試void方法中的邏輯以驗證更新的對象。 在我們的項目中,我有幾種類似的方法。

我知道這里有Mockito.verify或者我可以像doNothing等調用。這只是調用方法並查看內部正在發生什么。 但是我無法通過調用這些方法來進行數據驗證。

如果有人可以提出解決方案,那就太好了。

我舉了一個例子,說明我可以使用哪些代碼。 這是一個普遍的問題。 我的問題是如何測試無效方法? 我的問題不是如何模擬void方法。 由於void方法不會返回任何內容,但會執行一些邏輯,最后會更新DB。 我想測試實現的邏輯是否適用於不同的情況。 情況是無法更改原始方法,而是為這些方法編寫單元測試。 有什么建議么?

您的方法不返回任何東西的事實是無關緊要的。 您可以像其他任何方法一樣測試void方法:設置輸入,調用該方法,執行所需的斷言。

如果我理解正確,那么您遇到的問題是該方法不會返回任何內容,但是當您傳入初始User對象時,您已經具有對該對象的引用,因此您仍然可以執行void方法之后所需的任何斷言完成。

暫無
暫無

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

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