私は次のクラスを持っています:
public abstract class AbstractParent {
static String method() {
return "OriginalOutput";
}
}
このメソッドをモックしたい。JMockitを使用することにしました。そこで、モック クラスを作成します。
public class MockParent {
static String method() {
return "MOCK";
}
}
そして私のテストコードは次のようになります:
public class RealParentTest {
@Before
public void setUp() throws Exception {
Mockit.redefineMethods( AbstractParent.class, MockParent.class );
}
@Test
public void testMethod() {
assertEquals(MockParent.method(),AbstractParent.method());
}
}
残念ながら、このテストでは、AbstractParent は "MOCK" ではなく "OriginalOutput" を返します。理由はありますか?私は何か間違ったことをしていますか?モッククラスも抽象として宣言しようとしましたが、役に立ちませんでした。
編集メソッドを公開すると、テストが問題なく実行されることに注意してください... JMockitでは、任意のスコープのメソッドをモックできるはずなので、これは奇妙です。
回答モック メソッドのみをパブリックにする必要があります。元のメソッドはそのままにしておくことができます。