我正在編寫一個Junit測試框架來測試Web服務。帶反射的空白字段
要求輸入值來自許多不同的來源,例如較早的Web服務調用或類內的文字。
爲了實現這一點,我有構造函數以不同的方式接受不同的輸入;迄今爲止都很簡單。
問題是Web服務還需要執行一個完整的數據加載和一個必填字段只有有效載荷。
而不是使用if
語句來判斷是否設置一個值,但我已經寫了一個註釋@Optional,而不是使用(在某些情況下是verrry long)測試。
添加此註釋導致其通過下面的代碼被清零:
/**
* Find all of the fields annotated with optional and null them
* @throws IllegalAccessException
* @throws IllegalArgumentException
*/
private void blankOptionalFields() throws IllegalAccessException{
for(Field field: this.getClass().getDeclaredFields()){
Annotation optionalAnnotation = field.getAnnotation(Optional.class);
if(!(field.isSynthetic()) && optionalAnnotation instanceof Optional){
field.setAccessible(true);
try{
field.set(this, null);
}
catch(IllegalArgumentException e){
logger.debug("Tried to set a scalar field to null!", e);
}
}
}
}
所以兩兩件事:
1:雖然這個作品它在某種程度上感覺脆弱/危險的,必須有一個更好的方法? 2:如果這不是一個拙劣的方法,那麼將標量值設置爲合適的值的最好方法是什麼?
我對這個解決方案不知情。我不清楚爲什麼我沒有首先想到這一點。 – 2010-01-20 16:04:56