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

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

7Im"TQg9K}pl0/**51Testing软件测试网n&~T0@d3x*e^
*手工创建:
*W I8k0q \9Oyt0*下面这个简单的测试运行器负责创建测试包,首先添加各个测试然后添加整个测试包。
?;x-E,I4m!o1r7@0*/
!N3J0q\ V7qx+T0import junit.framework.Test;
SQX;j9Y0T1Z0import junit.framework.TestSuite;51Testing软件测试网]xD0_ ^-u*k/e

.i WEp7\Bi~+i6v Z0public class TestRunner {51Testing软件测试网DS3wTi(s6h
    public static TestSuite suite() {
3i'YA&I9Y#f*{4O b0        TestSuite t = new TestSuite();51Testing软件测试网-H,BqA(zM6} } ]
        t.addTest(new HelloWorldTest("testSayHello"));
T C R2m@#gD$^!v0        t.addTest(new SimpleTest("testTest"));51Testing软件测试网!W0P X3ZmcNe L
        t.addTestSuite(TestRunner.class);51Testing软件测试网 I,TLo(k-y!x
        return t;
p"f2^+{ Cp0    }
$T|c&o#K6H.D'Xy051Testing软件测试网(\Aw)N%QLz
    public static void main(String args[]) {
Na6^#jlN0        junit.textui.TestRunner.run(suite());51Testing软件测试网(OBU.?},a ]S6s[
    }
v;ag3Y*sB0}51Testing软件测试网%~'JJl:`.J%m
运行: java -classpath %CLASSPATH%;. TestRunner51Testing软件测试网!w6dT},FHC3BG i
(我的TestRunner.class放在与test同级的test目录下)
{$yP f? I051Testing软件测试网 cE6dHs!j
51Testing软件测试网&l%]7J3P:JP0G-FK4c/~
/**51Testing软件测试网0z+ek!}*H7b
*自动创建:51Testing软件测试网c1g*d2@kT
*从命令行上读取测试目录,遍历整个目录寻找扩展名为“.class”的文件,然后把它们加到测试包里。51Testing软件测试网 ~)~6D1FK
*/
!N,@@P:C g:_Rg0import junit.framework.Test;
]I1tO\z uD;xA&l0import junit.framework.TestSuite;51Testing软件测试网P R:op(xo/p&S
import java.lang.ClassNotFoundException;
at,Zdi0import java.io.*;51Testing软件测试网~0xvPk2M`q
import java.util.Vector;
;mzZ:eI|2c]051Testing软件测试网5u[lh!V3p @
public class AllRunner {
!Sl!r\)y.UqW]0    public static void class_list(File directory, TestSuite t) {51Testing软件测试网"`&]:bp-T%_
        if (directory.isDirectory()) {51Testing软件测试网!fN[9T/z
            String[] files = directory.list();
N_&E[O*Q&^ R]c0            for (int i = 0; i < files.length; i++) {51Testing软件测试网;m KG'vq N2F7eK D
                File f = new File(directory, files[i]);51Testing软件测试网,\'l(r|XI5B\|
                if (f.isFile() && f.getName().endsWith(".class")) {51Testing软件测试网` ?KN'Ro n/v
                    int len = f.getName().length();
CU4{$V5I&p0                    String n = f.getName().substring(0, len - 6);
xmU,h4H0^.C#q0                    try {
E3wbY,~0                        t.addTestSuite(Class.forName(n));51Testing软件测试网,k.i#\"ZcryQ
                    } catch (java.lang.ClassNotFoundException e) {51Testing软件测试网UU-s[#p`B
                        System.out.println(e);51Testing软件测试网 F"E'rfo`'c;y!l
                    }
4C(e'~ev/[*y#b'J0                }51Testing软件测试网DW"z@GM
            }
4C L!m0J6r:yz0        }51Testing软件测试网F nH*f Pg
    }
y{ Wk4D"h1`P0
'dt&Z*IjC0s.m V5p0    public static void main(String args[]) {51Testing软件测试网3Q,ePP V&D.K
        TestSuite t = new TestSuite("请输入欲测试的目录名: " + args[0]);51Testing软件测试网#}oS j`q.C
        AllRunner.class_list(new File(args[0]), t);51Testing软件测试网 `W*|R;s/f F
        junit.textui.TestRunner.run(t);
d#K Z1OYv!?&_2_ l$i"]0    }51Testing软件测试网%JN&zPP;w-EJJ
}
0Cz,L }Ki051Testing软件测试网^h'|c9RTs%a D&wB

Vz![ l x3cBZ6l0技巧:将所有的测试案例放到一个tmp目录下,运行51Testing软件测试网&W#D?"emVWB dow

z1bK wP:f0`6^R0java -classpath %CLASSPATH%;. AllRunner ../tmp
q%f(xS.D0
EP~~&DL'lGCWe0(我的AllRunner.class放在与test同级的目录test目录下)
Xh YEf*R0
&H(d]7x1[&d k z0    就这个例子来说,创建的测试运行器运行了指定目录下的所有测试,并把结果屏幕显示。当然,我们动态创建的测试包假定所有的测试都要运行而且按照从目录中以字母顺序读取的顺序运行。51Testing软件测试网kz4Vp m6M
51Testing软件测试网A)^Dn)x
    不对将执行的测试进行选择也是一种可能的测试需求,不过,在这种情况下你就只能手工地把测试加到测试包里。
Dxb5fH7m6ui1I0
)Y"h"?"j#J9R7P!g(?'W0    注意:我们的测试运行器(TestRunner)采用Java类装载器导入类,所以装载器要装载的类一定要位于类路径下(因此我已将d:\j2sdk1.4\mywork下的class目录加到CLASSPATH中去了)。
w9TN5pM q0M$Y%r051Testing软件测试网wL&l.b;|)Iq
    测试运行器的输出结果就是测试结果,因为输出结果表示了目录下所有测试的状态,所以这种测试对我们的开发工作很有帮助。51Testing软件测试网"X"uJK(t-`/H+p ]


TAG: JUnit 单元测试

 

评分:0

我来说两句

日历

« 2024-03-19  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

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

RSS订阅

Open Toolbar