2012-09-05 3 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. 코드에서 생성자를 직접 호출하지 말고 설정자를 통해 필드 주입을 사용하십시오. 이렇게하면 두 클래스의 조롱 된 인스턴스를 테스트 할 수 있습니다.

  2. 두 필드에 기본 범위 설정 메소드를 제공하십시오. 이러한 방법은 테스트 목적으로 만 사용됩니다.

  3. 필드를 조롱 된 인스턴스로 설정하려면 반사를 사용하십시오. 이를 수행하는 쉬운 방법은 Spring의 ReflectionTestUtils를 사용하는 것입니다.

이 중 하나가 제자리에 있으면 테스트하려는 동작을 유도하기 위해 조롱 된 인스턴스를 제공 할 수 있습니다 (아마도 Mockito를 사용). 옵션 1은 fesible이면 가장 좋으며, 옵션 3은 좋습니다. 그러나 옵션 3의 단점은 테스트가 개인 필드의 이름에 종속된다는 것입니다.