0
使用JUnit
。JUnit:如何避免@Parameters中的詳細/重複數據? (重構)
一個測試類我有兩個實例變量:
private final Locale locale;
private final PersonaValidationUpdate personaUpdateInvalid;
它們的值通過@Parameters
定義。有意向的@Test
方法同時使用,當然它
我用:
@Parameters(name="{index}: Locale: ''{0}'' - ''{1}'' ")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{ ClientUserLocale.ENGLISH.getLocale(), PersonaValidationUpdate.NULL},
{ ClientUserLocale.ENGLISH.getLocale(), PersonaValidationUpdate.EMPTY},
{ ClientUserLocale.ENGLISH.getLocale(), PersonaValidationUpdate.MIN},
{ ClientUserLocale.ENGLISH.getLocale(), PersonaValidationUpdate.MAX},
{ ClientUserLocale.PORTUGUESE.getLocale(), PersonaValidationUpdate.NULL},
{ ClientUserLocale.PORTUGUESE.getLocale(), PersonaValidationUpdate.EMPTY},
{ ClientUserLocale.PORTUGUESE.getLocale(), PersonaValidationUpdate.MIN},
{ ClientUserLocale.PORTUGUESE.getLocale(), PersonaValidationUpdate.MAX},
{ ClientUserLocale.SPANISH.getLocale(), PersonaValidationUpdate.NULL},
{ ClientUserLocale.SPANISH.getLocale(), PersonaValidationUpdate.EMPTY},
{ ClientUserLocale.SPANISH.getLocale(), PersonaValidationUpdate.MIN},
{ ClientUserLocale.SPANISH.getLocale(), PersonaValidationUpdate.MAX}
});
}
即使在上述工程中的代碼,很冗長,想象一下,如果我們添加了一個新的Locale
(即:日本)。我必須添加一個新塊並重復ClientUserLocale.JAPANESE.getLocale()
次。
有沒有辦法減少上面顯示的代碼?
我的目標是測試
PersonaValidationUpdate.NULL
PersonaValidationUpdate.EMPTY
PersonaValidationUpdate.MIN
PersonaValidationUpdate.MAX
凡從上面的每個項目,應該是所有可用的Locale
s到我ClientUserLocale
枚舉測試。在這種情況下,我只有3個定義。
怎麼樣通過'ClientUserLocale'值列表循環和添加新項對於'NULL','EMPTY','MAX','MIN'中的每一個?這樣,無論您添加或刪除新的枚舉值,代碼都不會改變... – Morfic
您好,PersonaValidationUpdate是其他枚舉根據每種情況或場景創建無效實體。將有可能看到一個代碼來獲得更好的理解? –
如果'PersonaValidationUpdate'也是一個枚舉,那麼它可能更簡單。看看下面的答案,讓我知道你的想法/疑惑。 – Morfic