正文
for (Iterator iter = this.classes.iterator(); iter.hasNext();) {
Class clzz = (Class) iter.next();
names[x++] = clzz.getName();
public Class getBaseClass() {
public void setBaseClass(final Class baseClass) {
this.baseClass = baseClass;
如您所见,清单1的Hierarchy类包含一个 baseClass实例及其超类的集合。
在 HierarchyBuilder清单2中创建 Hierarchy通过两个重载类static 冠以方法buildHierarchy。
清单2.类层次结构构建器:
package com.vanward.adana.hierarchy;
public class HierarchyBuilder {
private HierarchyBuilder() {
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) {
throw new RuntimeException("Class parameter can not be null");
final Hierarchy hier = new Hierarchy();
final Class superclass = clzz.getSuperclass();
null && superclass.getName().equals("java.lang.Object")) {
while ((clzz.getSuperclass() != null) &&
(!clzz.getSuperclass().getName().equals("java.lang.Object"))) {
clzz = clzz.getSuperclass();
如果没有测试用例,关于测试覆盖率的文章将会是什么?
在清单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]);