2016-07-06 30 views
0

需要幫助以瞭解我在做錯什麼。這裏是我的用戶列表的測試用例,其中用戶設置爲null的必填字段,如果缺少必填字段,則使用message引發參數異常。同時檢查了我的方法,看起來不錯。java.lang.AssertionError:java.lang.AssertionError:預期:需要姓氏實際:需要登錄名

//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

這很可能是錯誤不符合您期望的順序。

此外,將分割測試以便每個驗證單獨驗證會更好。換言之,有... WithMissingLastName,... WithMissingLogin,... WithMissingEmailAdress,... WithMissingRole測試。

這使診斷更容易,它可能更接近你真正打算測試的東西。

如果驗證從未應用,那麼您的測試也不會失敗。防止這種情況的一種方法是在try/catch塊內調用fail方法。

+0

是的我現在分裂它的工作謝謝@digitalbrikes – Prathyusha