您的位置:逆风者 软件工程 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:12 来源:ibm

本文章共3716字,分3页,当前第2页,快速翻页:
 


  问题是,这些度量有什么用?很明显,很容易获得所有这些信息,不过您需要知道如何使用它们。一些例子可以阐明我的观点。

  代码覆盖在活动

  我在清单 1 中创建了一个简单的类以具体表述类层次的概念。一个给定的类可以有一连串的父类,例如 Vector,它的父类是 AbstractList,AbstractList 的父类又是 AbstractCollection,AbstractCollection 的父类又是 Object:
逆风编程技术

清单 1. 表现类层次的类
 



package com.vanward.adana.hierarchy; 



import java.util.ArrayList; 

import java.util.Collection; 

import Java.util.Iterator; 



public class Hierarchy { 

  private Collection classes; 

  private Class baseClass; 



  public Hierarchy() { 

    super(); 

    this.classes = new ArrayList(); 

  } 



  public void addClass(final Class clzz){ 

    this.classes.add(clzz); 

  } 

  /** 

   * @return an array of class names as Strings 

   */ 

  public String[] getHierarchyClassNames(){ 

    final String[] names = new String[this.classes.size()];         

    int x = 0; 

    for(Iterator iter = this.classes.iterator(); iter.hasNext();){ 

       Class clzz = (Class)iter.next(); 

       names[x  ] = clzz.getName(); 

    }         

    return names; 

  } 



  public Class getBaseClass() { 

    return baseClass; 

  } 



  public void setBaseClass(final Class baseClass) { 

    this.baseClass = baseClass; 

  } 

} 


  正如您看到的,清单 1 中的 Hierarchy 类具有一个 baseClass 实例以及它的父类的集合。清单 2 中的 HierarchyBuilder 通过两个复制 buildHierarchy 的重载的 static 方法创建了 Hierarchy 类。

清单 2. 类层次生成器
 



package com.vanward.adana.hierarchy; 



public class HierarchyBuilder {   



  private HierarchyBuilder() { 

    super();   

  } 



  public static Hierarchy buildHierarchy(final String clzzName)  

    throws ClassNotFoundException{ 

      final Class clzz = Class.forName(clzzName, false,  

          HierarchyBuilder.class.getClassLoader());         

      return buildHierarchy(clzz); 

  } 



  public static Hierarchy buildHierarchy(Class clzz){ 

    if(clzz == null){ 

      throw new RuntimeException("Class parameter can not be null"); 

    } 



    final Hierarchy hier = new Hierarchy(); 

    hier.setBaseClass(clzz); 



    final Class superclass = clzz.getSuperclass(); 



    if(superclass !=  

      null && superclass.getName().equals("java.lang.Object")){ 

       return hier;  

    }else{       

       while((clzz.getSuperclass() != null) &&  

          (!clzz.getSuperclass().getName().equals("Java.lang.Object"))){ 

             clzz = clzz.getSuperclass(); 

             hier.addClass(clzz); 

       }          

       return hier; 

    } 

  }       

} 


  现在是测试时间!

  有关测试覆盖的文章怎么能缺少测试案例呢?在清单 3 中,我定义了一个简单的有三个测试案例的 JUnit 测试类,它将试图执行 Hierarchy 类和 HierarchyBuilder 类:

清单 3. 测试 HierarchyBuilder!
 



package test.com.vanward.adana.hierarchy; 



import com.vanward.adana.hierarchy.Hierarchy; 

import com.vanward.adana.hierarchy.HierarchyBuilder; 

import junit.framework.TestCase; 



public class HierarchyBuilderTest extends TestCase { 

   

  public void testBuildHierarchyValueNotNull() {         

     Hierarchy hier = HierarchyBuilder.buildHierarchy(HierarchyBuilderTest.class); 

     assertNotNull("object was null", hier); 

  } 



  public void testBuildHierarchyName() {         

     Hierarchy hier = HierarchyBuilder.buildHierarchy(HierarchyBuilderTest.class); 

     assertEquals("should be junit.framework.Assert",  

       "junit.framework.Assert",  

         hier.getHierarchyClassNames()[1]);       

  } 



  public void testBuildHierarchyNameAgain() {         

     Hierarchy hier = HierarchyBuilder.buildHierarchy(HierarchyBuilderTest.class); 

     assertEquals("should be junit.framework.TestCase",  

       "junit.framework.TestCase",  

         hier.getHierarchyClassNames()[0]);       

  } 

  

}
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 下一页>>
相关文章

项目经理:做好项目开始阶段的九条经验
统一建模语言UML轻松入门之动态建模
统一建模语言UML轻松入门之用例
建模过程的盲点:软件集成中的软知识
“寻找圣杯的任务”——度量软件之美
软件开发质量管理层次模型
代码检测:Code Review与CheckStyle
统一建模语言UML轻松入门之综合实例
32位程序移植到64位平台前的准备工作
统一建模语言UML轻松入门之基本概念
为什么要用UML建模之建模的重要性
函数库、组件产品的测试方法
为什么要用UML建模之建模原理
单元测试工具C Test简介
统一建模语言UML轻松入门之类和对象
几款开放源代码的软件测试工具介绍
为什么要用UML建模之面向对象建模

相关评论


本文章所属分类:首页 软件工程

  热门关键字: