2012-12-12 2 views
0

Hi : 일반적으로 클래스의 객체를 대체하려면 mock (Java 에이전트)을 사용합니다. 예를 들어Mock 대신 Java, Instance Replace

:

public class ClassA{ 
    public ClassB realObjectB; 
    public ClassC realObjectC; 


    public void Method1(){ 
     realObjectC = new ClassC(); 
     realObjectB = new ClassB(realObjectC); 
    }  

    ... 

    ... 

} 물론

public class ClassB { 


     public void ParticularInhereitedMethod(){ 
      many dependency objects involved... 
     } 

} 

는, ClassB가와 ClassC는 예를 들어 연결 풀에 대한 다른 많은 의존성을 가지고있다.

내가 테스트를, 나는 할 수 있습니다 테스트 응용 프로그램에서

public class Mock extends ClassB{   

@override 
public class ParticularInhereitedMethod(){ 
     Make clean codes, no dependency. 
} 

}

:

public class MainClass{ 

      public static void main(String[] args){ 
        ClassA a = new ClassA(); 
        ClassM m = new Mock(); 
        a.realObjectB = m; 

        manipulate m; 
      } 

    } 

이 위의 방법은 실제 테스트에서 작동합니까? Java 에이전트 (바이트 코드 대체)를 사용해야하는 이유는 무엇입니까?

+2

mock 개체의 개념과 일부 라이브러리에서 구현하는 방법을 혼동스럽게 생각한다고 생각합니다. 모의 객체는 코드에 표시되는 것과 정확히 일치하며 자바 에이전트를 사용하지 않습니다. 그리고 그들은 일합니다. 모의 객체를 생성하는 데 매우 강력한 mocking 라이브러리가 있습니다. 이들은 자바 에이전트 또는 이와 유사한 것들을 사용하여 이러한 객체를 빌드 할 수 있습니다. – Jochen

+0

내 방법이 잘못 되었습니까? mockito를 사용하거나 의존성 주입을 사용해야합니까? – user84592

답변

2

문제를 해결하기 위해 Mockito http://code.google.com/p/mockito/과 스프링 주입을 사용하는 것이 좋습니다. 런타임에 개체의 인스턴스를 해결할 수 있습니다 스프링 매개 변수에서 개체에 반환 매개 변수를 선언 할 수 있습니다 mockito의 가나와

+0

올바른 직업에 맞는 도구 – tucuxi

+0

내 방법이 잘못 되었습니까? mockito를 사용하거나 의존성 주입을 사용해야합니까? – user84592

+0

메소드의 프로 우블은 a.realObjectB = m입니다.이 방법으로 속성이 개인용이어야하는 경우 테스트 전용으로 public으로 설정해야합니다. 나는 당신이 봄과 통제의 반전을 시끄럽게 생각한다고 생각합니다. 그래서 당신은 당신의 물건의 오른쪽을 주입 할 수 있습니다. –

1

당신은/당신의 객체가 상대적이기 때문에 교체 아웃 조롱하기 어려운 발견 할 수있다 복잡한. 나는 그들을 더 간단한 방법으로 테스트하고 의존성 삽입을 사용하여 하위 클래스 화없이 구현을 대체 할 수있는 방법을 살펴볼 것이다.

+0

내 방법이 잘못 되었습니까? mockito를 사용하거나 의존성 주입을 사용해야합니까? – user84592