2016-07-06 5 views
0

私が間違っていることを理解するのに役立つ必要があります。ここで私のテストケースは、ユーザーの必要なフィールドがnullに設定されているユーザーのリストです。必要なフィールドが見つからない場合は、message.Alsoで引数の例外をスローすると良いと思われます。java.lang.AssertionError:java.lang.AssertionError:期待される:lastNameが必要です実際:loginNameは必要です

//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テスト。

これは診断を簡単にするためのもので、実際にテストしようとしているものに近いと思われます。

また、検証が適用されない場合、テストは失敗しません。これを防ぐ方法の1つは、try/catchブロックの中でfailメソッドを呼び出すことです。

+0

はい私は今すぐ分割しました。ありがとう@digitalbrikes – Prathyusha

関連する問題