2012-09-05 36 views
0

可能重複:
junit test class for the following code代碼中調用另一個類的對象的方法

我如何寫下面的代碼JUnit測試類,

包裝樣品;

公共類Fortest {

UserDao userdao = new UserDao(); 
Phone name = new Phone(); 
public String handleUser(User user) { 

    String returncode="failed"; //  User usr = new User("bob"); 
    String username=user.getUsername(); 
    String pass=user.getPass(); 
    System.out.println("username and password : "+username+" : "+pass); 


    String ph = name.getA(); 
    System.out.println("ph "+ph); 

    if(ph.equalsIgnoreCase("test")){ 
     System.out.println("A "+ph); 
     returncode="done"; 
    } 
    System.out.println("returning "+returncode); 

    return returncode; //  System.out.println("name "+name.toString()); //  System.out.println(name.getA()); 


} } 

回答

0

所以,你需要做的下列選項之一來嘲笑注入到田間nameuserdao

  1. 不要直接在你的代碼中調用構造函數,而是通過setter來使用字段注入。這將允許您的測試提供兩個類的嘲諷實例。

  2. 爲兩個字段提供默認範圍設置方法。這些方法僅適用於測試目的。

  3. 使用Refection將字段設置爲模擬實例。一個簡單的方法就是使用Spring的ReflectionTestUtils。

一旦其中之一是在地方,你可以提供嘲笑實例(可能使用的Mockito)來驅動你要測試的行爲。我建議選項1是最好的,如果可能的話,然後選項3.然而,選項3的缺點是測試取決於私人領域的名稱。