2

makeBooks()Mockito で book オブジェクトを返すメソッドをテストしたいと思います。したがって、テストは book オブジェクトを返すかどうかをチェックします。それ、どうやったら出来るの?

以下は本を生産する私の工場です。そのクラスの下には、私の Mockito テスト クラスがあります。「Mockito を誤用しました」というエラー コードが表示されました

ちなみに私はMockitoを学んでいます。これは宿題でも宿題でもありません。

public class ItemFactory {
    public Items getItems(String itemType)
    {      
        public static Books makeBooks(String bookName,String authorName, int ISBN, int id)
        {
            Books book = new Books(bookName, authorName, ISBN, id);
            return book;
        }
    }
}

public class TestItemFactory {
    private static final Books books = null;
    private static ItemFactory mockItemFactory;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        mockItemFactory = Mockito.mock(ItemFactory.class);
    }

    @Test
    public void testShouldReturnObjectBooks(){
        //ItemFactory methodMakeBooks = Mockito.mock(ItemFactory.class) ;
        //Books book = null;// = ItemFactory.makeBooks("Hamlet", "ShakeSpear", 123456, 9);
        //final Class<?> bookClass = Books.class;
        //Mockito.when(methodMakeBooks.makeBooks(null, null, 0, 0)).thenReturn(book);
        Books book = null;

        mockItemFactory = Mockito.spy(new ItemFactory());
        Books mockBook = Mockito.mock(Books.class);
        Mockito.when(mockItemFactory.makeBooks(null, null, 0, 0)).thenReturn(book);
        //Mockito.doReturn(mockBook).when(mockItemFactory).makeBooks(null, null, 0, 0);
    }
}
4

4 に答える 4

3

テスト中のクラスをモックするべきではありません。テスト対象のクラス/メソッドが使用しているクラスをモックしている必要があります。Itemsfactory.makeBooks() をモックするのは意味がありません

ItemsFactory が本を作成するために使用している Bookfactory があった場合、BookFactory をモックして、期待していた特定の本/本のセットを返すことができます。そして、あなたはそれについて主張することができます

于 2013-11-03T06:50:21.450 に答える
0

PowerMockito (静的メソッドのモック用) を Mockito と Junit (アサート用) で使用することをお勧めします。テスト対象のクラス (CUT、ItemFactory など) のテイスト クラスを作成しようとしましたが、ItemFactory クラスはコンパイルできません。

ItemFactory クラスを修正してください。PowerMockito と Mockito を使用してテストする方法を紹介します。

于 2013-11-07T20:46:39.957 に答える