Mockito を使用した抽象クラスのモック
抽象クラスのテストは、特に手動でのモック作成を考慮している場合に課題が生じる可能性があります。ただし、Mockito を活用すると、別のアプローチが提供されます。
Mockito.mock() with Answers.CALLS_REAL_METHODS
手動でモック クラスを構築する代わりに、Mockito のモック() メソッドを使用できます。 Answers.CALLS_REAL_METHODS 引数とともに使用されます。このオプションは、抽象クラスから継承するモック クラスを生成し、実際のメソッドを明示的に実装せずにテストできるようにします。
例:
抽象クラス My を考えてみましょう。テスト下のメソッドmethodUnderTest()と抽象メソッドmethodIDontCareAbout()。次のコード スニペットは、このアプローチを使用してメソッドUnderTest() をテストする方法を示しています。
<code class="java">@Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); }</code>
この例では、Mockito.mock(My.class, Answers.CALLS_REAL_METHODS) は、実際のメソッドを許可する My のモック インスタンスを作成します。 MethodUnderTest() の実装を実行して、そのロジックのテストを有効にします。同時に、抽象メソッドのmethodIDontCareAbout()はテストによって呼び出されないため、実装する必要がありません。
利点
このアプローチにより、テストが合理化されます。カスタム サブクラスを作成したり、抽象メソッドを実装したりする必要がなくなるため、抽象クラスの作成が容易になります。また、抽象クラスとテスト ケースの間の望ましい分離が維持され、よりクリーンで簡潔なテストが可能になります。
以上がMockito はどのようにして抽象クラスのテストを簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。