Mockito と抽象クラスのテスト
抽象クラスのテストは課題を引き起こす可能性があります。継承を通じてモックを手動で作成するのは面倒で冗長に感じられます。幸いなことに、Mockito のようなモック フレームワークは代替アプローチを提供します。
Mockito の抽象クラスのモック化を支援します
Mockito は、明示的なサブクラス化の必要性を回避しながら、抽象クラスのシームレスなモックを可能にします。 Mockito.mock(My.class, Answers.CALLS_REAL_METHODS) を利用することで、抽象クラスを継承したモックを作成できます。このモックは、サブクラスと部分モックの両方として機能します。
抽象メソッドの実装の回避
Answers.CALLS_REAL_METHODS 構成を使用すると、抽象メソッドを実装せずにモックできます。実際のメソッドは、テストで明示的にスタブアウトしない限り、そのまま実行されます。
実装例
次の抽象クラスとテスト ケースを考えてみましょう。
<code class="java">public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } public class MyTest { @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); } }</code>
この例では、Mockito.mock() を使用してモックが作成され、methodIDontCareAbout() が実装されていない場合でも、Answers.CALLS_REAL_METHODS によってメソッド methodUnderTest() が抽象クラスでの定義どおりに実行されることが保証されます。 。このアプローチにより、テスト プロセスが簡素化され、手動でサブクラスを作成する必要がなくなりました。
以上がMockito は、明示的なサブクラス化を行わずに抽象クラスをテストするのにどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。