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

上一篇 / 下一篇  2009-09-03 15:52:21 / 个人分类:单元测试

51Testing软件测试网5Qd%M6X.D;m

/**
w$E E{"G+Y#cH7j0*手工创建:
-W3?'t1X*T)j_Q0*下面这个简单的测试运行器负责创建测试包,首先添加各个测试然后添加整个测试包。51Testing软件测试网AP'r?:j4n5?8}(q7Mtx
*/51Testing软件测试网3MjN;Z0D
import junit.framework.Test;
1cW"} F P0import junit.framework.TestSuite;51Testing软件测试网i??]Xvt3K!E

a-F8a*H L'K0mB s0public class TestRunner {51Testing软件测试网)`F}%NMk t~8`-r c
    public static TestSuite suite() {
WP_Qa Cg0        TestSuite t = new TestSuite();51Testing软件测试网 ~Ezuv,I
        t.addTest(new HelloWorldTest("testSayHello"));51Testing软件测试网*M}d;w#r H0z e:zf
        t.addTest(new SimpleTest("testTest"));51Testing软件测试网|6u5]^B*sW,[ah
        t.addTestSuite(TestRunner.class);
*K1e^)w^"x \/t0        return t;
QtD T'cV_}s5}0    }51Testing软件测试网:C'oXA6Q2R1a/@_"U
51Testing软件测试网p#M"Ws-e2i Mn.A|
    public static void main(String args[]) {51Testing软件测试网oEe |P*R-Sn
        junit.textui.TestRunner.run(suite());51Testing软件测试网1`2ilJR_
    }51Testing软件测试网NmJ4ld"[l7X
}
-JRth,[{M,R0运行: java -classpath %CLASSPATH%;. TestRunner
7m-JE0l:T \:z+O(@0(我的TestRunner.class放在与test同级的test目录下)51Testing软件测试网V5i e3Qhsj:I
51Testing软件测试网r\4_4~6~ A.g:n:o
51Testing软件测试网,c/WXZ}VE4WP
/**
K'Rx:T9P0*自动创建:51Testing软件测试网(N V7~*]^:}%Wp
*从命令行上读取测试目录,遍历整个目录寻找扩展名为“.class”的文件,然后把它们加到测试包里。51Testing软件测试网|\ {f6tk^
*/51Testing软件测试网,yNV]&njh8@
import junit.framework.Test;51Testing软件测试网*wt @7O:}k7Bi
import junit.framework.TestSuite;51Testing软件测试网WE c+C/BGg
import java.lang.ClassNotFoundException;
cKL/~0T#i8f|koJ0import java.io.*;51Testing软件测试网f `&r&D v0H
import java.util.Vector;51Testing软件测试网U{Se5m4jy&Q1z
51Testing软件测试网6jVg/w&`CX U'Sc(C
public class AllRunner {
.FWl\:~9w*q.|,{0    public static void class_list(File directory, TestSuite t) {
$yzYm.w"eLCj0        if (directory.isDirectory()) {51Testing软件测试网.Y-_$v4N Ccf[
            String[] files = directory.list();51Testing软件测试网*]5TOa|.l%L4u
            for (int i = 0; i < files.length; i++) {
*H/@#L`A T `X0                File f = new File(directory, files[i]);51Testing软件测试网9p]3k(H3T&CWB*`q
                if (f.isFile() && f.getName().endsWith(".class")) {51Testing软件测试网@V.^*J_CG.j|
                    int len = f.getName().length();
Y-Nv"Y5o;Ho0                    String n = f.getName().substring(0, len - 6);
(|JF#wWRq_0                    try {
5b$I)Oq \uYE"o0                        t.addTestSuite(Class.forName(n));
_^t6E$er0                    } catch (java.lang.ClassNotFoundException e) {
PU m8c*Z1D0                        System.out.println(e);51Testing软件测试网4R;b1[S?"d!UL
                    }51Testing软件测试网X(Ku+cH!L:e/A
                }
Nt%EH:M~]qI0            }
9LZ_P a0o%}0        }51Testing软件测试网#Y,k[?!U"s
    }
Pv#ZU$q&T!Yu+D0
qcg'Ro0    public static void main(String args[]) {
1Zab ~|#B1N&k2g0        TestSuite t = new TestSuite("请输入欲测试的目录名: " + args[0]);51Testing软件测试网;|/KEXj*Le&F
        AllRunner.class_list(new File(args[0]), t);
a aT3rUU"Y0        junit.textui.TestRunner.run(t);
M8N VO6Fy:]e\MQl0    }
6H\t/NX(@3C0}
!d c,q@'O*|:dU4?3Y0
7M(y/x7GFY051Testing软件测试网eZs)`G#CPcm
技巧:将所有的测试案例放到一个tmp目录下,运行
*~*g{s$K*m051Testing软件测试网;Lf+l R:f_W
java -classpath %CLASSPATH%;. AllRunner ../tmp
M3]R~$p-j:vs051Testing软件测试网Y RvN XqI
(我的AllRunner.class放在与test同级的目录test目录下)51Testing软件测试网Q pU.Mz,L
51Testing软件测试网'S-Z5W o"` G?xq c
    就这个例子来说,创建的测试运行器运行了指定目录下的所有测试,并把结果屏幕显示。当然,我们动态创建的测试包假定所有的测试都要运行而且按照从目录中以字母顺序读取的顺序运行。51Testing软件测试网R,n+GS I H%Q:l
51Testing软件测试网Cm'DU$`8?-\
    不对将执行的测试进行选择也是一种可能的测试需求,不过,在这种情况下你就只能手工地把测试加到测试包里。51Testing软件测试网 Q6bLvz$k:_0` h
51Testing软件测试网sP-\v)\
    注意:我们的测试运行器(TestRunner)采用Java类装载器导入类,所以装载器要装载的类一定要位于类路径下(因此我已将d:\j2sdk1.4\mywork下的class目录加到CLASSPATH中去了)。51Testing软件测试网tq1P$qEpx

+xem7Qzk!VE a0    测试运行器的输出结果就是测试结果,因为输出结果表示了目录下所有测试的状态,所以这种测试对我们的开发工作很有帮助。51Testing软件测试网 q lI!G No,Z+p3L


TAG: JUnit 单元测试

 

评分:0

我来说两句

日历

« 2022-01-20  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

  • 访问量: 38000
  • 日志数: 47
  • 建立时间: 2009-09-03
  • 更新时间: 2010-06-10

RSS订阅

Open Toolbar