java.lang.AssertionError:java.lang.AssertionError:预期:lastName是必需的实际:loginName是必需的

时间:2016-07-06 03:18:01

标签: java mockito testng

需要帮助才能理解我做错了什么。这是我的用户列表的测试用例,其中用户的必填字段设置为null,如果缺少必填字段,则使用message抛出参数异常。还检查我的方法似乎很好。

//Test case begins  
    @Test(groups = {"unit"})
    public void testProcessOrderWithMissingFieldsForUsers() throws Exception {
        GenericOrder order = getOrder();
              List<User> users = order.getUsers();
              User user = users.get(0);
              user.setLastName(null);
              user.setLoginName(null);
              user.setEmailAddress(null);
              user.setRole(null);
        try {
                 orderService.processOrder(order);
              } catch (ArgumentException aex) {
                 Assert.assertEquals(aex.getFieldErrors().get(0).getMessage(),"lastName is required");
                 Assert.assertEquals(aex.getFieldErrors().get(1).getMessage(), "loginName is required");
                 Assert.assertEquals(aex.getFieldErrors().get(2).getMessage(), "emailAddress is required");
                    Assert.assertEquals(aex.getFieldErrors().get(3).getMessage(), "role is required");
              }

1 个答案:

答案 0 :(得分:0)

错误很可能不是您期望的顺序。

此外,最好分割测试,以便单独验证每个验证。换句话说有... WithMissingLastName,... WithMissingLogin,... WithMissingEmailAdress,... WithMissingRole测试。

这使得诊断更容易,并且可能更接近您真正想要测试的内容。

如果从未应用验证,您的测试也不会失败。防止这种情况的一种方法是在try / catch块中调用fail方法。