JUNIT简单实例及模板

开发过程中进行单元测试,尽可能尽早的将BUG找出,是开发者应该做的。JUNIT为JAVA开发者提供了一个很好的测试机制,以下是一个简单的JUNIT应用实例,也是初学可供参考的JUNIT模板。

package junit.sineat.templet;
import java.util.Hashtable;
import junit.framework.Assert;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class JunitB extends TestCase...{
/** *//**定义你需要测试的类及用到的变量*****************************/
public Hashtable hasha=null; //
  public Hashtable hashb=null;
/** *//*******************************************************/
public JunitB(String name)...{
super(name); //创建子类
  }
/** *//**用setUp进行初始化操作*/
protected void setUp() throws Exception ...{
super.setUp();
hasha =new Hashtable(); //这里  
  }
/** *//**用tearDown来销毁所占用的资源*/
protected void tearDown() throws Exception ...{
super.tearDown();
//System.gc();
  }
/** *//**写一个测试方法断言期望的结果**/
public void testBodyStatus() ...{
//hasha =new Hashtable(); //有此句后也可去掉setUp() tearDown()
    assertNotNull(hasha);
//hasha.put("0","let's try again"); //test1.error版
    assertTrue(hasha.isEmpty()); //期望为空
  }
/** *//**再写一个测试方法断言期望的结果**/
public void testBodySame() ...{
//hashb=(Hashtable)hasha.clone(); //test2.error版
    hashb=hasha; //test2.OK 版
    Assert.assertSame(hasha,hashb);
}
/** *//**suite()方法,使用反射动态的创建一个包含所有的testXxxx方法的测试套件**/
public static TestSuite suite() ...{
return new TestSuite(JunitB.class);
}
/** *//****写一个main()运行测试*****************/
public static void main(String args[]) ...{
junit.textui.TestRunner.run(suite()); //以文本运行器的方式方便的
//junit.swingui.TestRunner.run(JunitB.class);
  }
}

以上为JUNIT的简单测试样例,不需过多考虑性能及规范,但资深JAVA开发者建议:

一、不要在测试用例的构造函数中做初始化

答案是重载测试用例的setUp()方法进行初始化。

二、不要假定测试用例中测试的执行次序

好的习惯是保持测试之间的独立性,使得它们在任何次序下执行的结果都是相同的。

三、测试要避免人工干预

经验二讲的是不同的测试要避免相关性,而经验三讲的其实就是测试要避免自相关。

四、在子类中调用父类的setUp() 和tearDown()

五、不要硬性规定数据文件的路径

六、把测试的代码和被测的代码放在同样的目录下

七、正确命名测试

八、书写测试时要考虑地区和国家设置

九、利用Junit 的自动异常处理书写简洁的测试代码

事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。

十、充分利用Junit 的assert/fail 方法

assertSame()用来测试两个引用是否指向同一个对象

assertEquals()用来测试两个对象是否相等

十一、确保测试代码与时间无关

十二、使用文档生成器做测试文档。

时间: 2025-01-21 12:31:57

JUNIT简单实例及模板的相关文章

smarty结合xajax检测用户名简单实例

<?php   /*****************************************    Title :smarty结合xajax检测用户名简单实例    Author:leehui1983(辉老大)    Finish Date  :2006-12-09   *****************************************/   //为避免中文乱码,需要在 xajax.inc.php 需要改一下默认的encoding:define ('XAJAX_DEFAU

自定义一个异常类模板的简单实例_java

一:自定义异常类: package 自定义异常; //或者继承RuntimeException(运行时异常) public class MyException extends Exception { private static final long serialVersionUID = 1L; // 提供无参数的构造方法 public MyException() { } // 提供一个有参数的构造方法 public MyException(String message) { super(mes

Discuz! 7.2新功能“分类信息主题显示模板”简单实例

中国领先的http://www.aliyun.com/zixun/aggregation/9263.html">社区平台与服务提供商康盛创想(Comsenz)旗下核心产品Discuz!新版近期正式发布.全新推出的Discuz! 7.2版本从用户注册登陆应用.社区论坛前后管理两方面着眼,增加和改进了30多处与社区门户运营密切的功能与细节,实现了邮箱登陆.分类信息检索.版块绑定域名等与运营密切的应用方式. 本期教程笔者就为大家讲解下,Discuz! 7.2新功能"分类信息主题显示模板

Discuz! 7.2 “分类信息主题显示模板”简单实例讲解

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 中国领先的社区平台与服务提供商康盛创想(Comsenz)旗下核心产品Discuz!新版近期正式发布.全新推出的Discuz! 7.2版本从用户注册登陆应用.社区论坛前后管理两方面着眼,增加和改进了30多处与社区门户运营密切的功能与细节,实现了邮箱登陆.分类信息检索.版块绑定域名等与运营密切的应用方式. 本期教程笔者就为大家讲解下,Di

关于使用Spring和hibernate开发web程序的配置说明和简单实例的详细说明

关于使用Spring和hibernate开发web程序的配置说明和简单实例的详细说明 作者:yanekemail:yanek@126.com 一.实现目标: 通过使用spring和hibernate,实现用户的添加功能.把用户信息加入到数据库中使用Spring 的hibernate模板实现DAO操作. 最终效果: 浏览器中输入 http://localhost:8083/hibernateTestWeb/user.do 数据库就增加一条记录. 二.分层结构 系统采用如下分层结构 1.WEB层:用

关于webwork+freemarker的简单实例

  关于webwork+freemarker的简单实例   action类:   public class TestAction extends CoreActionSupport implements BaduObjectLoader {  public List getUsers() {   return users;  }  private List users;      public String execute() {      List users_=new ArrayList()

AngularJS 路由详解和简单实例_AngularJS

AngularJS 路由 本章节我们将为大家介绍 AngularJS 路由. AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA). 通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现,例如: http://runoob.com/#/first http://r

PHP中使用foreach()遍历二维数组的简单实例_php技巧

第一种类型 想用foreach()遍历整个二维数组: $team = array('lk','ok'); $book = array('linux服务器配置与管理',$team); foreach($book as $k=>$val) //for $book each $value( as ) echo $k.'=>'.$val.''; 输出结果是: 0=>linux服务器配置与管理 1=>Array 当然,其实我是想要所有具体内容,而不是输出array... 所以应该采用如下做法

java发送HttpClient请求及接收请求结果过程的简单实例_java

一. 1.写一个HttpRequestUtils工具类,包括post请求和get请求 package com.brainlong.framework.util.httpclient; import net.sf.json.JSONObject; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.HttpResponse; import org.apache.http.client.methods.Htt