WEB开发网
开发学院软件开发Java 追求代码质量: 用 AOP 进行防御性编程 阅读

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

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 刚编好这个方法,我还没注意到这个缺陷,追求代码质量: 用 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:追求 代码 质量

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