1. ホーム

[解決済み】Mockitoを使用して抽象クラスをテストする

2022-04-04 15:22:20

質問

抽象的なクラスをテストしたいのですが、どうすればいいですか?もちろん 手動でモックを作成する を継承しています。

モックを手作りする代わりに、モッキングフレームワーク(私はMockitoを使用しています)を使用してこれを行うことはできますか?どのように?

どのように解決するのですか?

次の提案は、抽象クラスをテストする際に、本物のサブクラス(モック)を作成することなくテストすることを可能にします。 サブクラスです。

使用 Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS) そして、呼び出された抽象的なメソッドをモック化します。

public abstract class My {
  public Result methodUnderTest() { ... }
  protected abstract void methodIDontCareAbout();
}

public class MyTest {
    @Test
    public void shouldFailOnNullIdentifiers() {
        My my = Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS);
        Assert.assertSomething(my.methodUnderTest());
    }
}

注:このソリューションの利点は、以下のようなことがないことです。 があります。 を実装する必要があります。

というのも、スパイはインスタンスを必要とするので、抽象クラスのインスタンス化可能なサブクラスを作らなければならないからです。