JUnit测试骨架

JUnit测试骨架

使用JUnit时,主要都是通过继承TestCase类别来撰写测试用例,使用testXXX()名称来撰写单元测试。

用JUnit写测试真正所需要的就三件事:

1.一个import语句引入所有junit.framework.*下的类。

2.一个extends语句让你的类从TestCase继承。

3.  一个调用super(string)的构造函数。

下面针对求最大值函数编写测试用例:

1.简单测试:[7,8,9]->9;

2.位序测试:[9,8,7]->9;[7,9,8]->9;[8,7,9]->9;

3.重复值测试:[9,7,9,8]->9;

4.单值测试:[1]->1;

5.负值测试:[-7,-8,-9]->-7;

6.空值测试:[]->抛出异常;

测试类NumberToolTest:

public class NumberToolTest extends TestCase {

publicNumberToolTest(Stringname){

super(name);

}

publicvoidtestSimple(){

assertEquals(9,NumberTool.getMax(newint[]{7,8,9}));

}

publicvoidtestOrder(){

assertEquals(9,NumberTool.getMax(newint[]{9,8,7}));

assertEquals(9,NumberTool.getMax(newint[]{7,9,8}));

assertEquals(9,NumberTool.getMax(newint[]{8,7,9}));

}

publicvoidtestDups(){

assertEquals(9,NumberTool.getMax(newint[]{9,7,9,8}));

}

publicvoidtestOne(){

assertEquals(1,NumberTool.getMax(newint[]{1}));

}

publicvoidtestNegitave(){

assertEquals(-7,NumberTool.getMax(newint[]{-7,-8,-9}));

}

publicvoidtestEmpty(){

try{

NumberTool.getMax(newint[]{});

fail("Shouldhavethrownanexception");

}catch(RuntimeExceptione){

assertTrue(true);

}

}

}

Case 1:如果你只想执行某TestCase中的部分测试函数,则可自己构建TestSuite

做法:

下面的代码针对NumberToolTest中的两个测试函数testSimple()和testNegitave()进行测试。

import com.zj.c01.NumberToolTest;

importjunit.framework.Test;

importjunit.framework.TestSuite;

publicclassPartTest{

publicstaticTestsuite(){

TestSuitesuite=newTestSuite();

suite.addTest(newNumberToolTest("testSimple"));

suite.addTest(newNumberToolTest("testNegitave"));

returnsuite;

}

}

Case 2:组合多个testCase一起来测试

public class NumberToolTest2 extends TestCase {

privateint[]arr;

publicNumberToolTest2(Stringname){

super(name);

}

protectedvoidsetUp()throwsException{

super.setUp();

arr=newint[]{-5,-4,-3,-2,-1,0,1,2,3,4,5};

}

protectedvoidtearDown()throwsException{

super.tearDown();

arr=null;

}

publicvoidtestMax(){

assertEquals(5,NumberTool.getMax(arr));

}

publicvoidtestMin(){

assertEquals(-5,NumberTool.getMin(arr));

}

}

做法:

下面会将NumberToolTest2和NumberToolTest一起来进行测试

public class CompositeTest {

publicstaticTestsuite(){

TestSuitesuite=newTestSuite("Runningalltests.");

suite.addTestSuite(MathToolTest.class);

suite.addTestSuite(NumberToolTest.class);

returnsuite;

}

}

注意:

每一个定义好的TestCase,都使用TestRunner来运行测试,事实上TestRunner并不直接运行TestCase上的单元方法,而是通过TestSuite ,TestSuite可以将数个TestCase组合在一起。

在上面的例子中,并没有看到任何的TestSuite,这是因为TestRunner的run()方法中会建立TestSuite:

staticpublicvoidrun(ClasstestClass){

run(newTestSuite(testClass));

}

相关推荐