2016-12-07 12 views
0

私はほとんど正常に動作し、次のユニットテスト、持っている:あなたが見ることができるようにこのユニットテストで "N"例外をスローする方法はありますか?

@Test(expectedExceptions = {IllegalArgumentException.class}, expectedExceptionsMessageRegExp = 
     PasswordValidator.INVALID_PASSWORD) 
public void testInvalidPasswordsThrowException() throws Exception { 
    for (String invalidPassword: getInvalidPasswords()){ 
     new LaxPasswordValidator(invalidPassword); 
    } 
} 

private String[] getInvalidPasswords() { 
    return new String[] {INVALID_PASSWORD_1, INVALID_PASSWORD_2, INVALID_PASSWORD_3, INVALID_PASSWORD_4, 
      INVALID_PASSWORD_5, INVALID_PASSWORD_6, INVALID_PASSWORD_7, INVALID_PASSWORD_8, INVALID_PASSWORD_9, 
      INVALID_PASSWORD_10}; 
} 

、それだけで期待new LaxPasswordValidator(invalidPassword)作品として主張し、例外をスローされます。

問題:INVALID_PASSWORD_1を考慮しているため、最初の繰り返しで停止します。例外を起動しますが、他のパスワードのチェックは続行しません。どうすればそれらをすべてテストすることができますか?おかげ

答えて

1

あなたが@DataProvider

@DataProvider(name = "invalid-passwords") 
public Object[][] getInvalidPasswords() { 
    return new String[][]{ 
     {"INVALID_PASSWORD_1"}, 
     {"INVALID_PASSWORD_2"}, 
     {"INVALID_PASSWORD_3"} 
    }; 
} 

の方法に注釈を付けるとパラメータのために、このデータプロバイダを使用するために@Testメソッドに注釈を付けなければなりません。

@Test(expectedExceptions = {IllegalArgumentException.class}, 
    expectedExceptionsMessageRegExp = PasswordValidator.INVALID_PASSWORD, 
    dataProvider = "invalid-passwords") 
public void testInvalidPasswords(String password) throws Exception { 
    new LaxPasswordValidator(password); 
} 
+0

ありがとうございました! –

関連する問題