• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

单元测试和编码协作

发布: 2009-12-24 10:54 | 作者: 不详 | 来源: 领测国际测试网采编 | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网

  public static Testsuite() {

  return new TestSuite(ComplexTest.class);

  }

  Figure 1 一个复数类例子:(a)JUnit测试的setup,(b)JUnit测试的实例,(c)在一个类中为所有实例动态得创建一个测试组(test suite)

  要创建测试用例,我们要在 ComplexTest类中添加包含我们要执行的assertion的方法。测试方法名以“test”开始,并且必须是public修饰的(public 类型)。只有这样JUnit才能通过Java的反射机制来调用它。我们接下来要测试的是对象的判等在我们的Complex类中重写了 java.lang.Object的equals()方法,加法和乘法。

  Figure 1(b)展示了上述几个测试方法的实现。

  我们可以用任何的Java原始类中都定义的assertEquals方法。(The assertEquals method is overloaded and defined for all wuhuif primitives, apart from wuhuif objects.这里的assertEquals()方法重写和定义了所有Java原始类中的定义。)也可以用assertTrue和 assertFalse来测试条件;用assertNull和assertNotNull来判断是否为空的引用;assertSame和 assertNotSame来测试两个对象是否指向同一个引用。

  接下来就要开始运行测试了。最简单的方法就是让 JUnit通过反射机制来找到预定义的测试用例。当然也可以通过编写一些其他的代码来静态指定要使用的测试用例。要用反射机制来动态指定要运行的测试用例,我们只需要像Figure 1(c)一样在ComplexTest类中添加一个Testsuite()方法。

  三、运行测试

  运行测试时,我们不需要为Complex类添加任何一行代码。事实上,在以测试驱动的开发过程中,是先编写测试,然后写具体的类的实现。当然一开始就编写类的代码也不会有任何的问题。JUnit的相关信息可以在www.JUnit.org上找到。这个站点中有很多文档,包括Beck和Gamma原创的介绍JUnit的文章。JUnit的安装非常简单,只需要解压就完成了。在编译的过程中,需要确保ClassPath中包含了JUnit所在的目录。假设你将程序放在/usr/java/JUnit下,编译的命令就是javac –classpath “.:/usr/java/JUnit/JUnit.jar” ComplexTest.java。

  要运行测试,可以通过一下命令启动JUnit的图形界面:java -classpath “.:/usr/java/JUnit/JUnit.jar” JUnit.swingui.TestRunner 然后输入包含测试组的类名。接下来JUnit就会进行测试,如果所有的测试都通过了,窗口上就会出现一个绿色的滚动条,如Figure2所示(图略)。由此也就有了JUnit的箴言:“Keep the bargreen to keep the code clean.”,意思为,保持条为绿色,也就得到了良好的代码。如果出现了错误,条就会变称红色,同时会出现一个关于失败测试的详细信息。如果你更喜欢文本界面,可以通过如下命令调用:

  wuhuif -classpath “.:/usr/java/JUnit/JUnit.jar” JUnit.textui. TestRunner ComplexTest,在中端窗口中就会出现运行结果。

  现在,你可以为Complex类添加更多的方法,比如一个复数的除法。与此同时,你也要为ComplexTest类添加一个测试用例,运行测试,然后纠正任何存在的错误,继续编码和测试。

  四、JUnit的遗赠和竞争

  JUnit的成功激励了很多促进特殊代码测试的扩展的诞生。这些扩展的目标是对数据库代码、EJB,Servlets等进行测试。JUnit也能很好的和一些开发环境(工具)相结合。JUnit Ant Task允许Ant调用JUnit的测试任务(要了解更多关于Ant,见Nicholas Serrano 和 Ismael Ciordia 2004年11、12月份的专栏)。JUnit的官方网站上包括了很多JUnit的扩展和与之结合的开发环境的介绍和链接。

  如果你最喜欢开发语言不是Java,其他的语言也提供了JUnit类似的接口和框架,xUNIT的符号代表了整个家族:CppUnit负责C++的单元测试;perlUnit是Perl的单元测试接口。 PyUnit是Python语言的单元测试标准框架;Test::Unit则控制了整个Ruby社区;Nunit是用C#完成的,为.Net平台提供了开源的单元测试支持。

  TestNG(www.beust.com/testng)是近来兴起的一个JUnit的替代品,吸引了很多开发者的注意,ParaSoft的Jtest(www.parasoft.com/jtest)是一个流行并且经济的测试工具。在表格中把上述工具和JUnit进行了比较。

  在表格中,我们可以看到Jtest提供了额外的一些特性,而这些特性你可能会认为只有那些比开源软件大100倍的商业软件才能拥有。不管怎样,这写额外的特性反映了一些不同的理念。本质上,JUnit是一个很简单的类库。事实上,如果你愿意,你可以从头开始写。JUnit在设计的时候,被设计为只用来做一件事情,但是一定要做好它。这个理念和Unix的工具的理念非常类似:让开发人员可以放入工具箱中,从而得到额外的功能。几个常见的JUnit例子有:JTestCase (http://jtestcase.sourceforge.net)

文章来源于领测软件测试网 https://www.ltesting.net/

43/4<1234>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网