簡體   English   中英

用於Spring MVC控制器的Junit

[英]Junit for Spring MVC Controller

我有一個Spring MVC應用程序,其中的一個控制器具有以下方法:

@PreAuthorize("isAuthenticated()")
@RequestMapping(value = "/admin/edit_admin", method = RequestMethod.GET)
public String editAdmin(Model model, HttpServletRequest request) {
    String returnPage = "create_admin";
    if (request.getParameter("login") != null) {
        try {
            List<AdminUser> userList = adminDAO.getAdminByLogin(request
                    .getParameter("login"));
            if (userList.size() == 1)
                model.addAttribute("ADMIN_USER", userList.get(0));
            returnPage = "edit_admin";
        } catch (Exception err) {
            returnPage = "edit_admin";
        }
    }
    return returnPage;
}

DAO Class:

public List<AdminUser> getAdminByLogin(String login) throws SQLException {
    List<AdminUser> userList = new ArrayList<AdminUser>();

    String sql = "select * from ADMIN_USER where login=?";
    List<Map<String, Object>> result = jdbcTemplate
            .queryForList(sql, login);

    AdminUserRowMapper rowMapper = new AdminUserRowMapper();
    for (Map<String, Object> map : result) {
        AdminUser aUser = (AdminUser) rowMapper.mapRow(map);
        userList.add(aUser);
    }
    return userList;
}

我需要為Controller和DAO編寫Junit測試類。 我嘗試首先為控制器編寫Junit測試:

@Test
public void editAdmin() throws SQLException {
    AdminUserDAO adminDAO = new AdminUserDAO();
    List<AdminUser> userList = adminDAO.getAdminByLogin("1234");
}

但是,當我運行此類時,會在DAO類上引發NullpointerException。 可以幫我為Controller和DAO編寫Junit測試類嗎? 我無法使用MockMvc,因為我正在使用不兼容的Spring框架。

首先, 測試控制器不是一個好主意 控制器只是一種傳遞機制 ,您要真正測試的是“ getAdminByLogin”用例。 理想情況下,控制器方法editAdmin()應該調用將用作您的用例的服務類的editAdmin()。

您的測試應直接使用服務類,即注入AdminUserDAO的模擬,然后調用服務類的editAdmin()。 最后,您可以驗證模擬是否感興趣,例如-

Mockito.verify(mockAdminDAO).getAdminByLogin("1234");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM