WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院软件开发Java 追求代码质量: 用 AOP 进行防御性编程 阅读

追求代码质量: 用 AOP 进行防御性编程

 2009-11-19 00:00:00 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示: 刚编好这个方法,我还没注意到这个缺陷,追求代码质量: 用 AOP 进行防御性编程(2),但由于我狂热地崇拜开发人员测试,于是我编写了一个使用 TestNG 的常规测试,我还是没有发现缺陷,但一些代码问题却困扰着我,而且,我还利用了 TestNG 方便的 DataProvider 特性

刚编好这个方法,我还没注意到这个缺陷,但由于我狂热地崇拜开发人员测试,于是我编写了一个使用 TestNG 的常规测试。而且,我还利用了 TestNG 方便的 DataProvider 特性,借助该特性,我创建了一个通用的测试用例并通过另一个方法来改变它的参数。运行清单 2 中定义的测试用例会产生两个通过结果!一切都运转良好,不是吗?


清单 2. 验证两个值的 TestNG 测试

import java.util.Vector; 
import static org.testng.Assert.assertEquals; 
import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 
 
public class BuildHierarchyTest { 
 
 @DataProvider(name = "class-hierarchies") 
 public Object[][] dataValues(){ 
 return new Object[][]{ 
  {Vector.class, new String[] {"java.util.AbstractList", 
   "java.util.AbstractCollection"}}, 
  {String.class, new String[] {}} 
 }; 
 } 
 
 @Test(dataProvider = "class-hierarchies"}) 
 public void verifyHierarchies(Class clzz, String[] names) throws Exception{ 
 Hierarchy hier = HierarchyBuilder.buildHierarchy(clzz); 
 assertEquals(hier.getHierarchyClassNames(), names, "values were not equal"); 
 } 
} 

至此,我还是没有发现缺陷,但一些代码问题却困扰着我。如果有人不经意地为 Class 参数传入一个 null 值会怎么样呢?清单 1 中第 4 行的 clzz.getSuperclass() 调用会抛出一个 NullPointerException,是这样吗?

上一页  1 2 3 4 5 6 7  下一页

Tags:追求 代码 质量

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接