簡體   English   中英

Junit和測試方法

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

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