JMockit을 사용하여 Android 앱을 테스트하고 있습니다. 로컬 JVM에서 테스트를 실행하면 모든 Android 클래스가 스텁임을 의미하므로 약간 까다 롭습니다.하지만 모방 할 수는 있지만 문제는 아닙니다.jmockit으로 중첩 클래스의 생성자를 모의 처리하는 방법
그러나 이제는 ResultReceiver의 하위 클래스 인 중첩 클래스에서 메서드를 테스트하려고합니다. 이 클래스는 Fragment에 중첩되어 있습니다. 문제는이 중첩 된 클래스를 만들 때 그 생성자가 예외를 발생시키기 때문에 조롱하고 싶다는 것입니다 (해당 스텁입니다). 나는 코드를 분리하려고 노력했으나 문제는 안드로이드가 아니라 클래스 구조와 관련이있다. 예 :
기본 클래스 :
public class JM_base {
int m_i;
public JM_base(int i) {
m_i = i;
}
}
중첩 클래스 :
public class JM_nested_class_cons {
public class Nested extends JM_base {
public Nested(int i) {
super(i);
}
public void methodToTest() {
System.out.print("System under test!");
}
}
}
시험 : 지금까지 내가 이해
public class Test_JM_nested_class_cons {
@Mocked JM_nested_class_cons mock;
@Test
public void test() {
new MockUp<JM_nested_class_cons.Nested>() {
@Mock public void $init(int i) {
System.out.println("Hi!");
}
};
JM_nested_class_cons.Nested t = mock.new Nested(1);
t.methodToTest();
}
}
, 중첩의 "진짜"생성자 () 전화해서는 안됩니다. "안녕!" 콘솔에 표시되어야합니다. 내가 도대체 뭘 잘못하고있는 겁니까 ?
들으
좋아. 그러나 문제는 constructor Nested (int i)가 호출되기도하고 이것이 피하고 싶다는 것입니다. 어쨌든 JM_base를 조롱하고 문제를 해결할 수 있습니다. 감사! –