2
我正在嘗試使用JMockit進行Android應用程序的單元測試。由於在本地JVM中執行測試意味着所有的Android類都是存根,所以這有點棘手,但是你可以嘲笑它們,這不是問題。如何使用jmockit模擬嵌套類的構造函數
但是現在我想測試一個嵌套類中的方法,它是ResultReceiver的子類。這個類嵌套在Fragment中。問題是當我創建這個嵌套類時,我想嘲笑它的構造函數,因爲它會引發一個異常(它是一個存根)。我試圖隔離代碼,但問題不在Android中,而是在類結構中。例如:
基類:
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();
}
}
據我明白,嵌套的 「真正的」 構造( )永遠不應該被稱爲,「嗨!」應該出現在控制檯中,對嗎?我究竟做錯了什麼 ?
THX
好吧,我看到如何攔截嵌套類的構造函數。但問題是構造函數Nested(int i)也被調用,這就是我想避免的。無論如何,我可以嘲笑JM_base並解決問題。謝謝! –