1. 概要

この短いチュートリアルでは、Mockitoを使用して最終的なクラスとメソッドをモックする方法に焦点を当てます。

Mockitoフレームワークに焦点を当てた他の記事( Mockito Verification Mockito When / Then Mockitoのモックメソッドなど)と同様に、を使用します。 ] MyList クラスは、テストケースの共同作業者として以下に示されています。

このチュートリアルに新しいメソッドを追加します。

public class MyList extends AbstractList {
    final public int finalMethod() {
        return 0;
    }
}

また、finalサブクラスで拡張します。

public final class FinalList extends MyList {

    @Override
    public int size() {
        return 1;
    }
}

2. 最終的なメソッドとクラス用にMockitoを構成する

Mockitoを使用して最終的なクラスとメソッドをモックする前に、それを構成する必要があります。

プロジェクトのsrc/ test / resources /mockito-extensionsディレクトリにorg.mockito.plugins.MockMakerという名前のテキストファイルを追加し、1行のテキストを追加する必要があります。

mock-maker-inline

Mockitoは、ロード時にextensionsディレクトリで構成ファイルをチェックします。 このファイルにより、finalメソッドとクラスのモックが可能になります。

3. 最終的な方法をモックする

Mockitoを適切に構成したら、他のと同じようにfinalメソッドをモックできます。

@Test
public void whenMockFinalMethodMockWorks() {

    MyList myList = new MyList();

    MyList mock = mock(MyList.class);
    when(mock.finalMethod()).thenReturn(1);

    assertNotEquals(mock.finalMethod(), myList.finalMethod());
}

MyList の具象インスタンスとモックインスタンスを作成することにより、 finalMethod()の両方のバージョンによって返される値を比較し、モックが呼び出されることを確認できます。 。

4. ファイナルクラスをモックする

最終クラスのモックは他のクラスのモックと同じくらい簡単です

@Test
public void whenMockFinalClassMockWorks() {

    FinalList finalList = new FinalList();

    FinalList mock = mock(FinalList.class);
    when(mock.size()).thenReturn(2);

    assertNotEquals(mock.size(), finalList.size());
}

上記のテストと同様に、最終クラスの具象インスタンスとモックインスタンスを作成し、メソッドをモックして、モックされたインスタンスの動作が異なることを確認します。

5. 結論

このクイック記事では、Mockito拡張機能を使用してMockitoで最終クラスとメソッドをモックする方法について説明しました。

完全な例は、いつものように、GitHubにあります。