需要帮助才能理解我做错了什么。这是我的用户列表的测试用例,其中用户的必填字段设置为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");
}
答案 0 :(得分:0)
错误很可能不是您期望的顺序。
此外,最好分割测试,以便单独验证每个验证。换句话说有... WithMissingLastName,... WithMissingLogin,... WithMissingEmailAdress,... WithMissingRole测试。
这使得诊断更容易,并且可能更接近您真正想要测试的内容。
如果从未应用验证,您的测试也不会失败。防止这种情况的一种方法是在try / catch块中调用fail方法。