欢迎光临
我们一直在努力

JUnit实施–2.回归测试框架-JUnit-JSP教程,资料/其它

建站超值云服务器,限时71元/月

2.回归测试框架-junit
通过前面的介绍,我们对junit有了一个大概的轮廓。知道了它是干什么的。现在让我们动手改写上面的测试类testcar使其符合junit的规范--能在junit中运行。

    //执行测试的类(junit版)    import junit.framework.*;        public class testcar extends testcase {                protected int expectedwheels;        protected car mycar;                public testcar(string name) {            super(name);        }                protected void setup() {            expectedwheels = 4;            mycar = new car();        }                public static test suite() {            /*             * the type safe way             *            testsuite suite= new testsuite();            suite.addtest(                new testcar("car.getwheels") {                     protected void runtest() { testgetwheels(); }                }            );            return suite;            */                /*             * the dynamic way             */                    return new testsuite(testcar.class);        }                public void testgetwheels() {            assertequals(expectedwheels, mycar.getwheels());        }    }    

改版后的testcar已经面目全非。先让我们了解这些改动都是什么含义,再看如何执行这个测试。

1>import语句,引入junit的类。(没问题吧)

2>继承 testcase 。可以暂时将一个testcase看作是对某个类进行测试的方法的集合。详细介绍请参看junit资料

3>setup()设定了进行初始化的任务。我们以后会看到setup会有特别的用处。

4>testgetwheeels()对预期的值和mycar.getwheels()返回的值进行比较,并打印比较的结果。assertequals是junit.framework.assert中所定义的方法,junit.framework.testcase继承了junit.framework.assert。

5>suite()是一个很特殊的静态方法。junit的testrunner会调用suite方法来确定有多少个测试可以执行。上面的例子显示了两种方法:静态的方法是构造一个内部类,并利用构造函数给该测试命名(test name, 如 car.getwheels ),其覆盖的runtest()方法,指明了该测试需要执行那些方法--testgetwheels()。动态的方法是利用内省(reflection )来实现runtest(),找出需要执行那些测试。此时测试的名字即是测试方法(test method,如testgetwheels)的名字。junit会自动找出并调用该类的测试方法。

6>将testsuite看作是包裹测试的一个容器。如果将测试比作叶子节点的话,testsuite就是分支节点。实际上testcase,testsuite以及testsuite组成了一个composite pattern。 junit的文档中有一篇专门讲解如何使用pattern构造junit框架。有兴趣的朋友可以查看junit资料

如何运行该测试呢?手工的方法是键入如下命令:

    [windows] d:>java junit.textui.testrunner testcar        [unix] % java junit.textui.testrunner testcar    

别担心你要敲的字符量,以后在ide中,只要点几下鼠标就成了。运行结果应该如下所示,表明执行了一个测试,并通过了测试:

    .    time: 0        ok (1 tests)    

如果我们将car.getwheels()中返回的的值修改为3,模拟出错的情形,则会得到如下结果:

    .f    time: 0    there was 1 failure:    1) testgetwheels(testcar)junit.framework.assertionfailederror: expected:<4> but was:<3>            at testcar.testgetwheels(testcar.java:37)    failures!!!    tests run: 1,  failures: 1,  errors: 0        

注意:time上的小点表示测试个数,如果测试通过则显示ok。否则在小点的后边标上f,表示该测试失败。注意,在模拟出错的测试中,我们会得到详细的测试报告“expected:<4> but was:<3>”,这足以告诉我们问题发生在何处。下面就是你调试,测试,调试,测试…的过程,直至得到期望的结果。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » JUnit实施–2.回归测试框架-JUnit-JSP教程,资料/其它
分享到: 更多 (0)