Androidアプリの単体テストにJMockitを使用しようとしています。ローカル JVM でテストを実行すると、すべての Android クラスがスタブになるため、少し注意が必要ですが、それらをモックすることはできます。それは問題ではありません。
しかし今、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();
}
}
私が理解している限り、Nested() の「実際の」コンストラクターは決して呼び出されるべきではなく、「こんにちは!」コンソールに表示されるはずですよね?私は何を間違っていますか?
どうも