這部分內容利用JUNIT 中的測試方法來說明注解優(yōu)于命名模式。命名模式是依賴于對于方法的命名在實現約定吴旋,如在JUNIT4之前對于測試方法的約定是以test 結尾的方法损肛。
命名模式有以下缺點:
1: 非常依賴約定,萬一命名拼寫錯誤荣瑟,就會導致失敗
2:無法確保只應用于相應的元素上治拿。
3: 無法提供參數值與程序元素關聯(lián)的方法。
而使用注解就可以避免上述問題笆焰。
后續(xù)的內容劫谅,作者主要在介紹如何使用注解:
@Repeatable可以讓一個注解在同一個元素上多次使用,其輔佐用是當重復使用一個注解之后嚷掠,就會變成@Repeatable注解里面配置的那個注解捏检。
如:
public static void main(String[] args) {
Class<Text> clazz = Text.class;
Method[] methods = clazz.getMethods();
for (Method method : methods) {
if (!method.getName().startsWith("test")) {
continue;
}
System.out.println(method.getName()); //false
System.out.println(method.isAnnotationPresent(AnnotationOne.class)); //true
}
}
第一個輸出會是false 是因為:@AnnotationOne在一個方法上重復使用之后變成了:@AnnotationTwo。
第二個為true 則是因為.getAnnotationsByType(AnnotationOne.class)還是會返回兩個結果不皆。
我在接觸到UnitTest 時就是直接接觸的JUNIT4贯城, 之前沒有注意到還有那么多的限制。一般在系統(tǒng)中也是使用注解較多霹娄。讀這部分內容讓我聯(lián)想起了系統(tǒng)中之前大師和K同學做的autoTest 框架能犯。其實就是混用了注解和命名模式。
@OwnerEmail 是使用了注解犬耻。而對于所有以autoTest 結尾的類才會自動運行則是命名模式踩晶。按書中的思想,其實改成@AutoTest 注解會更好一些香追。