技术开发 频道

感悟测试驱动开发

    测试案例分析

    在测试驱动开发实践中,第一步就是考虑测试方案,通过分析该类的功能,我们可以得到以下测试案例:

    1) 队列为空测试

    TC01: 队列新建时,应为空;

    TC02: 清空队列后,应为空;

    TC03: 当出队列操作次数与插入队列操作次数一样时,应为空;

    2) 插入队列测试:

    TC04: 插入队列操作后,新数据元素将插入在队列的未尾;

    TC05: 插入队列操作后,队列将一定不为空;

    3) 出队列测试

    TC06: 出队列操作后,第一个数据元素将被从队列中删除;

    4) 取队头测试

    TC07: 取队头操作将获得队列中的第一个数据元素。

    5) 清空队列测试

    TC08: 清空队列操作后,队列将为空队列;

    注: 此处为了讲解的方便,并未将所有的测试用例都列出,同时也选择了一些十分简单的测试用例。

    第一次迭代

    我们首先编写第一个测试代码,这一测试代码只考虑了测试案例TC01, 也就是保证新建的队列为空:

    import junit.framework.*;

    //每个使用JUnit编写的测试代码都应该包括本行

    public class testQueue extends TestCase

    //创建一个测试用例,继承TestCase

    {

    protected Queue q1;

    public static void main (String[] args)

    {

    junit.textui.TestRunner.run (suite());

    //执行测试用例

    }

    protected void setUp() //环境变量准备

    {

    q1= new Queue();

    }

    public static Test suite() //通用格式,指定测试内容

    {

    return new TestSuite(testQueue.class);

    }

    public void testEmpty() //以下每个方法就是一个测试

    {

    assertTrue(q1.empty());

    //当队列新建时,应为空-TC01

    }

    }

    安装JUnit十分简单,只需在www.junit.org中下载最新的软件包(ZIP格式), 然后将其解压缩,并且将"JUnit安装目录\junit.jar" 以及"JUnit安装目录"都加到系统环境变量CLASSPATH中去即可。

    执行套件可以像上述程序一样在main方法中使用,也可以直接在命令行调用:java junit.textui.TestRunner 测试类名(文本格式)、java junit.awtui.TestRunner 测试类名(图形格式,AWT版)、java junit.swingui.TestRunner测试类名(图形版,Swing版)。

    编译执行(即在命令行执行javac testQueue.java和javatestQueue), 你会发现屏幕上出现提示:

    .E 一个小点说明执行了一个测试用例,E表示其失败

    Time: 0.11 说明执行测试共花费了0.11秒

    There was 1 error: 说明存在一个错误

    1) testEmpty(testQueue)java.lang.NoClassDefFoundError: Queue

    at testQueue.setUp(testQueue.java:13)

    at testQueue.main(testQueue.java:9)

    FAILURES!!!

    Tests run: 1, Failures: 0, Errors: 1

    测试没有通过是肯定的,因为Queue类都还没有写呢?怎么可能通过测试,因此,我们就编写以下代码,以使测试通过:

    public class Queue extends java.util.Vector

    {

    public Queue()

    {

    super();

    }

    public boolean empty()

    {

    return super.isEmpty();

    }

    }

    将这个类编译后,再次执行测试程序,这时将出以下提示:

    . 一个小点说明执行了一个测试用例,没有E表示其成功

    Time: 0.11

    OK (1 test)

0
相关文章