使用Junit进行单元测试

发表于:2010-10-13 14:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:韩枫慧 译    来源:51testing 投稿

  1、为什么要进行测试

  大家经常会问这个问题,尽管答案是显而易见的,但是仍然有必要在这里作出回答。单元测试有很多作用,下面进行简要的说明:

  1.1 对代码进行测试

  对于程序员和他所在的公司来说,单元测试使检查程序员编写的代码的基本操作成为可能。当一个人开始写代码时,当要将传递给"测试人员"以及客户时,手工启动功能测试(在代码、main()函数中打印语句)必须被启动多次。

  使用JUnit进行单元测试,刚开始时成本较高,但是从长远来看,将可节省时间,因为它们的运行仅需要几秒钟。它们可以保证我们在工作中的预期行为是切实可行的。

  1.2 接口文档化

  单元测试使我们思考类暴露的接口。此外,也迫使我们更加关注文档的作用(而不是文档是怎么设计的)。

  通常,程序员几乎没有时间来写文档。单元测试,通常会使代码和接口持久行为很容易文档化。在那以后,如果接口优化/移动,则测试也必须优化/移动。否则将变成废弃的或者停止通过。

  1.3 定位bug

  代码编写完,通常会运行的很好。但是事后如果代码由其他人员接手,他没有花时间去了解代码编写人员的意图,就会有可能引入bug。

  定期使用自动化方式运行单元测试,将会使发现和修改这些功能性回归更加简单、快速。

  1.4 修改bug

  证明Bug的正确性首先需要编写为了重现这个bug的Junit单元测试。然后,我们知道当测试正常通过时表示bug被修改了。

  因为我们也可以运行一个回归测试集,这将只需要几秒钟,并且我们知道如果我们的改变也可能再引入其他bug。

  2、JUnit

  JUnit已经迅速成为Java测试的实际标准。其更大的优势是易于使用:

  功能测试

  所有你需要做的就是建立一个小型程序架构,用来调用程序去测试和调用预期输出来对比结果。

  就是这样。

  可以用一个TestSuite将多个测试组合在一起,这样允许我们关联一个项目时执行所有的测试,或者关联一个子项目,而不用加载整个应用。

  也有像HttpUnit和Jakarta Cactus这样的工具用来建立复杂的测试环境,使测试web projects-servlets客户/服务器应用、执行Javascript以及表单提交变得简单容易。

  3、如何使用JUnit

  这里有一个小例子

  让我们想象一个用一组整数来计算某种特定数学关系(加和、平均值、中位数、最大、最小)的java类。我们将忽略这一点的技术问题(当然有更好的方法来做到这一点)。我们的目标是显示这个类带给我们的预期输出。

  3.1 类的开始

  这里有一个我们将要测试的MathOps.java:

package org.dneary.math;
public class MathOps
{
}

  我们将要在MathOpsTest.java中编写测试代码。使用JUnit时一个好的做法是在一个单独包中实现测试。请注意,Junit.jar必须在编译类路径。

package org.dneary.math.test;

import junit.framework. *;
import org.dneary.math. *;

public class MathOpsTest extends public TestCase {
   public void test_dummy() {
     MathOps Mo = new MathOps();
   }
}

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号