Junit创建测试包——手工创建与自动创建

发表于:2009-5-11 14:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  /**

  *手工创建:

  *下面这个简单的测试运行器负责创建测试包,首先添加各个测试然后添加整个测试包。

  */

import junit.framework.Test;
import junit.framework.TestSuite;

public class TestRunner {
    public static TestSuite suite() {
        TestSuite t = new TestSuite();
        t.addTest(new HelloWorldTest("testSayHello"));
        t.addTest(new SimpleTest("testTest"));
        t.addTestSuite(TestRunner.class);
        return t;
    }

    public static void main(String args[]) {
        junit.textui.TestRunner.run(suite());
    }
}

  运行:java-classpath%CLASSPATH%;.TestRunner

  (我的TestRunner.class放在与test同级的test目录下)

  /**

  *自动创建:

  *从命令行上读取测试目录,遍历整个目录寻找扩展名为“.class”的文件,然后把它们加到测试包里。

  */

import junit.framework.Test;
import junit.framework.TestSuite;
import java.lang.ClassNotFoundException;
import java.io.*;
import java.util.Vector;

public class AllRunner {
    public static void class_list(File directory, TestSuite t) {
        if (directory.isDirectory()) {
            String[] files = directory.list();
            for (int i = 0; i < files.length; i++) {
                File f = new File(directory, files[i]);
                if (f.isFile() && f.getName().endsWith(".class")) {
                    int len = f.getName().length();
                    String n = f.getName().substring(0, len - 6);
                    try {
                        t.addTestSuite(Class.forName(n));
                    }
                    catch (java.lang.ClassNotFoundException e) {
                        System.out.println(e);
                    }
                }
            }
        }
    }

    public static void main(String args[]) {
        TestSuite t = new TestSuite("请输入欲测试的目录名: " + args[0]);
        AllRunner.class_list(new File(args[0]), t);
        junit.textui.TestRunner.run(t);
    }
}

  技巧:将所有的测试案例放到一个tmp目录下,运行

  java-classpath%CLASSPATH%;.AllRunner../tmp

  (我的AllRunner.class放在与test同级的目录test目录下)

  就这个例子来说,创建的测试运行器运行了指定目录下的所有测试,并把结果屏幕显示。当然,我们动态创建的测试包假定所有的测试都要运行而且按照从目录中以字母顺序读取的顺序运行。

  不对将执行的测试进行选择也是一种可能的测试需求,不过,在这种情况下你就只能手工地把测试加到测试包里。

  注意:我们的测试运行器(TestRunner)采用Java类装载器导入类,所以装载器要装载的类一定要位于类路径下(因此我已将d:\j2sdk1.4\mywork下的class目录加到CLASSPATH中去了)。

  测试运行器的输出结果就是测试结果,因为输出结果表示了目录下所有测试的状态,所以这种测试对我们的开发工作很有帮助。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号