メソッドパラメータとしてまだ実装されていないインターフェイスを使用するクラスでJUnitテストを実行するにはどうすればよいですか?

PippoDoc

メソッドパラメータとしてまだ実装されていないインターフェイスを使用するクラスでJUnitテストを実行する方法がわかりません。インターフェイスの実装がわからないので、実装できません。

たとえば、私はこのインターフェースを持っています

public interface Command{
     public void execute();
     ....
} 

インターフェイスをメソッドパラメータとして使用するクラス。

public class Manager{
    List<Command> listCommands = new List<Command>();

    public void storeCommand(Command command){
       listCommands.add(command);
    }
}

私がオンラインで読んだ解決策の1つは、mockitoを使用してインターフェイスの実装をモックすることですが、よくわかりません。

ありがとう!

Giorgi Tsiklauri

まずユニットテストのコンテキストでのモックの概念に慣れてください。この質問をすることで、自分がそうではないことを示します。

次に、固執するモックフレームワーク選択しますMockitoは良いもので、おそらく最も人気のあるものです。

最後に、このフレームワークで活用できるすべてのモック機能については説明しません(できません)が、これは、タイプ(インターフェイスまたはクラス)をモックする方法、およびモックインスタンスを構成して作成する方法の一例です。それはあなたがそれを振る舞わせたいように振る舞います:

import static org.mockito.Mockito.*;

class YourTestFixture {

    @Test
    public void yourTest()  {
        //create mock
        Command commandMock = mock(Command.class);

        //configure execute() method's return value
        when(commandMock.execute()).thenReturn("your expected value");

        //your assertions..

    }
}

これで、.execute()その特定のインスタンス(commandMockを呼び出すたびに、一貫して"your expected value"が返されます。

例外をスローさせたり、null..を返したり、やりたいことを何でもすることができますが、返されるオブジェクト/値は、返されると宣言されているメソッドのタイプ(またはサブタイプ)である必要があります。

あなたの例では:

public class Manager{
    List<Command> listCommands = new List<Command>();

    public void storeCommand(Command command) {
        listCommands.add(command);
    }
}

commandパラメータでメソッド呼び出しを使用していませんしたがって、上記で説明したように、インターフェイスを簡単にモックすることができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ