java 下面最常用的是junit (http://www.junit.org/),
基本用法是
1、import junit 包
2、定义一个测试类,最好以test开头,以方便ide自动搜索测试,测试类继承自TestCase,然后在里面写自己的test 方法,测试代码主要是运行类的各种方法,并用assert判断是否与预期相同。核心的assert 方法有
assertTrue ,assertFalse,assertNull,assertNotNull,assertSame,assertNotSame,assertEquals,还有一个fail直接写fail(),就会提示测试失败。
public class testMath extends TestCase{
public void testSum(){
assertEquals("3加2应该等于5",5,math1.sum(3,2));
}
}
3、如果测试类里面的每个测试都需要初始化某些资源,那么可以把初始化的代码放到测试类的初始化方法(setUp)里面,并在类的拆卸(tearDown)方法里面作善后工作。例如,在作数据库测试的时候,可以在(setUp)方法里面备份当前数据库,并把当前数据库里面的数据恢复为测试数据,并在(tearDown)方法里面将数据库恢复为当前数据。junit 会为每个测试方法运行一次(setUp)和(tearDown),以保证各个测试方法之间互不影响。
public class testMath extends TestCase{
public void setUp(){
初始化代码;
}
public void tearDown(){
善后代码;
}
public void test1(){
.......(测试代码1)
}
public void test2(){
.......(测试代码2)
}
public void test3(){
.......(测试代码3)
}
}
在这个例子里面,(setUp)和(tearDown)会被执行三次。
关于testCase 的管理
多个testCase可以被添加到一个testSuite里面,多个testSuite也可以被加到一个testSuite里面。
public class TestMySuit extends TestSuite{
public TestMySuit(){
super();
}
public static Test suite(){
TestSuite suite = new TestSuite();
suite.addTestSuite(myTest1.class);
suite.addTestSuite(myTest2.class);
return suite;
}
关于junit自己的扩展
1、ActiveTestSuite
在 这个suite里面的每个测试会在独立的线程里面运行,有几个测试,就有几个线程。
2、ExceptionTestCase 作者不建议用这个,既然不建议用,我就没看了
3、testDecorator
顾名思意,这个是对test进装饰的类,抄个书上的例子
public class InstrumentedTest Extends TestDecorator{
public instrumentedTest(Test arg0){
super(arg0);
}
public void run(TestResult result){
System.out.println("Starting "+ fTest.toString());
basicRun(result);
}
}
public class InstrumentedTest Tester extends TestCase{
public void testMethod(){
//...
}
public static Test suite(){
TestSuite suite = new TestSuite();
Test test = new InstrumentedTest Tester("testMethod");
suite.addTest(new instrumentedTest(test));
return suite;
}
public static.void main(String args[]){
junit.textui.TestRunner.run(suite());
}
}
4、RepeatedTest
public class RepeatedTest Tester Extends TestCase{
public void testMethod(){
}
public static void main(String args[]){
Test test = new RepeatedTest Tester("testMethod");
junit.textui.TestRunner.run(new RepeatedTest(test,10));
}
}
5、TestSetup 这个和testCase 的setUp和tearDown类似,不过是用于testSuite。