0

私は現在、この春の mvc アプリケーションで mockito 1.8.4 を使用しています。テストしようとしているクラス/メソッドのコードは次のとおりです。

public class CompleteTaskController implements IController {
    public static Logger log = Logger.getLogger(CompleteTaskController.class);

@Override
public void handle() {
    GUIFactory gf = new GUIFactory();
    IDatabasePullListOfUsers pull = new OraclePullListOfUsers();
    IDatabaseUserManagement manage = OracleUserManagement.getInstance();

    gf.makeGUI("completeTask", pull.pullAssignedRequests(GUIFactory.userLoggedIn));
    manage.completeTask(gf.getRequestID(), GUIFactory.userLoggedIn);
    gf.makeCustomGUI("Task has been completed");
    log.fatal(GUIFactory.userLoggedIn + " has completed the task of request id " + gf.getRequestID());
    gf.makeGUI("adminpanel");

}

}

これまでのところ、すべてのテストに合格していますが、最後のテストには合格しています。その理由を理解できないようです。私のテストのコードは次のとおりです。

public class CompleteTaskControllerTest {

    @Test
    public void testHandleCallsMakeGUIAndPassesItPullAssignedRequestsAndAString(){
        CompleteTaskController mockCtc = mock(CompleteTaskController.class);
        GUIFactory mockGf = mock(GUIFactory.class);
        IDatabasePullListOfUsers mockPull = mock(OraclePullListOfUsers.class);

        mockCtc.handle();

        verify(mockGf).makeGUI("test", mockPull.pullAssignedRequests("test"));
    }

    @Test
    public void testHandleCallsCompleteTaskAndPassesItGetRequestIDAndAString(){
        CompleteTaskController mockCtc = mock(CompleteTaskController.class);
        IDatabaseUserManagement mockManage = mock(OracleUserManagement.class);
        GUIFactory mockGf = mock(GUIFactory.class);

        mockCtc.handle();
        when(mockGf.getRequestID()).thenReturn(1);

        verify(mockManage).completeTask(mockGf.getRequestID(),"Test");
    }

    @Test
    public void testHandleCallsMakeCustomGUIAndPassesItAString(){
        CompleteTaskController mockCtc = mock(CompleteTaskController.class);
        GUIFactory mockGf = mock(GUIFactory.class);

        mockCtc.handle();

        verify(mockGf).makeCustomGUI("test");
    }
}

このコードをすべて投げつけて申し訳ありません - 私が問題を抱えている唯一のテストは 3 番目のテストです - これは gf.makeCustomGUI("Task has been completed") メソッドをモックしようとしています!

4

1 に答える 1

1

声明で

verify(mockGf).makeCustomGUI("test");

「makeCustomerGUI」が引数「test」で呼び出されたかどうかを確認しようとしていますか。それがあなたの要件である場合は、以下のように行うことができます:

GUIFactory mockGf = mock(GUIFactory.class);
mockGf.makeCustomerGUI("test");
verify(mockGf).makeCustomGUI("test");

モック オブジェクトが作成されると、Mockito はそれに対するすべての呼び出しを記憶します。したがって、呼び出しを選択的に検証できます。

于 2013-08-29T14:46:53.877 に答える