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 에이전트 (바이트 코드 대체)를 사용해야하는 이유는 무엇입니까?
mock 개체의 개념과 일부 라이브러리에서 구현하는 방법을 혼동스럽게 생각한다고 생각합니다. 모의 객체는 코드에 표시되는 것과 정확히 일치하며 자바 에이전트를 사용하지 않습니다. 그리고 그들은 일합니다. 모의 객체를 생성하는 데 매우 강력한 mocking 라이브러리가 있습니다. 이들은 자바 에이전트 또는 이와 유사한 것들을 사용하여 이러한 객체를 빌드 할 수 있습니다. – Jochen
내 방법이 잘못 되었습니까? mockito를 사용하거나 의존성 주입을 사용해야합니까? – user84592