[英]Junit and testing a method
考慮以下代碼:
public void methodA(String arg1, String arg2) {
String resultDB;
....process something
/**do a db call using arg1 - currently the table is not yet
defined in the db **/
//String resultDB = result value from db call;
if (resultDB equals VALUEA)
do some processing
}
..further processing using arg1 and arg2
}
當前db表不可用,但是其余邏輯可以執行。
我如何才能針對各種路徑測試此方法。 resultDB可以等於或不等於“ VALUEA”。 總之,Junit中是否有測試路徑的事實,即resultDB不是方法的參數而是局部變量。
問題是:resultDB如何獲得其價值? 您很可能正在調用另一個對象的方法。 在這種情況下,另一個對象可能需要是模擬對象; 然后您就可以在測試中指定該模擬的行為。
換句話說:您可以控制resultDB的值; 然后您可以使用斷言來檢查您的方法是否滿足各種選項的期望。
也許值得研究“干凈的代碼”原則。 我認為您的代碼在一種方法中做了太多事情; 並且您的代碼取決於太多參數,這些參數會驅動方法中的路徑。 基本上,您應該簡化整個過程。 最好:每種情況下一種方法; 然后可以輕松對其進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.