首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 开源技术 >> JUnit >> 正文

JUnit学习笔记之NetBeans入门篇

 一、简介

  本文与之前的《JUnit学习笔记》所记述的内容是一致的,只不过IDE换成了最近开始试用的NetBeans。NetBeans是新近流行的一款堪与Eclipse媲美的IDE,有Sun的支持,最新版本5.0RC2,本文使用的是4.1中文版,可以从www.netbeans.org下载
  JUnit是一款由Erich Gamma(《设计模式》的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试框架,供Java编码人员做单元测试之用,可以从www.junit.org网站上免费获得。本文使用的是NetBeans自带的JUnit 3.8.1。

二、创建项目

  下面打开NetBeans,然后点击菜单“文件”->“新建项目”,打开“新建项目”对话框:

请在“类别”中选择“常规”,再从“项目”中选择“Java应用程序”,然后点击“下一步”,进入“新建Java应用程序”对话框: 

在这个对话框中需要设置项目的名称以及项目所在目录,我为自己的项目起名为JUnitTest,“项目位置”为G:\YPJCCK\JUnit\NetBeans,此外,请将“创建主类”前的对号去掉。项目创建好后,已经自带了JUnit 3.8.1。

三、编写用于测试的JavaBean

  用于测试的JavaBean很简单,名为Book,只有id和name两个属性,这两个属性将分别用于两个用例当中。下面开始编写该JavaBean。
  请点击“文件”->“新建文件”,打开“新建文件”对话框:

确保“项目”选择的是JUnitTest,然后在“类别”中选中Java类,在“文件类型”中选中Java类,点击“下一个”,进入下一窗口:

设置类名为Book,包为net.zheng.junit.test,设置完成后点击“完成”,修改代码如下:
  package net.zheng.junit.test;

  public class Book {
    private String id = null;
    private String name = null;

    public String getId() {
      return id;
    }
    public void setId(String id) {
      this.id = id;
    }
    public String getName() {
      return name;
    }
    public void setName(String name) {
      this.name = name;
    }
  }
至此,用于测试的JavaBean编写完成。

四、编写测试用例

  这里只用了一个类进行测试,名为BookTest,该类继承自junit.framework.TestCase类。BookTest类包含两个用例,分别对应该类的testId和testName方法,即每个方法实现了一个测试用例。注意,在JUnit中,junit.framework.TestCase的子类中每个用来实现测试用例的方法都必须以testXXX的格式来命名,这些方法在运行时会被执行。此外,BookTest还包括setUp和tearDown这两个方法,前者在每个测试方法开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。下面开始编写BookTest。
  请点击“文件”->“新建文件”,打开“新建文件”对话框:

确保“项目”选择的是JUnitTest,然后在“类别”中选中JUnit类,在“文件类型”中选中现有类的测试,点击“下一个”,进入下一窗口:

选择要测试的类,点击“完成”,修改代码如下:
  package net.zheng.junit.test;

  import junit.framework.TestCase;
  import junit.framework.Assert;

  public class BookTest extends TestCase {
    Book book = null;

    //建议为测试类创建构造
    public BookTest(String name) {
      super(name);
    }

    protected void setUp() throws Exception {
      //调用超类的setUp(),以确保测试环境被初始化
      super.setUp();

      System.out.println("测试开始!");
      book = new Book();
      System.out.println("book对象被初始化!");
    }

    protected void tearDown() throws Exception {
      System.out.println("book对象将被清理!");
      book = null;
      System.out.println("测试结束!");

      //调用超类的tearDown(),以确保测试环境被清理
      super.tearDown();
    }

    public void testId() {
      book.setId("001"); //设置id属性的值为001
      //使用Assert查看id属性的值是否为001
      Assert.assertEquals("001", book.getId());
      System.out.println("id属性被测试!");
    }

    public void testName() {
      book.setName("ASP"); //设置name属性的值为ASP
      //使用Assert查看name属性的值是否为JSP,这是个必然出现错误的测试
      Assert.assertEquals("JSP", book.getName());
      System.out.println("name属性被测试!");
    }
  }
这里setUp和tearDown方法没什么好说的,就是执行了对book对象的初始化和清理,不过testId和testName需要说明一下。前者是在对book的id属性进行测试,首先赋值为”001”,然后使用Assert的assertEquals方法查看id属性中存放的值是否是期待的值,由于我的期待值也是”001”,所以执行后这个用例应该是成功的;后者则是对book的name属性进行测试,也是首先赋值为”ASP”,然后使用Assert的assertEquals方法查看其值是否是期待的,由于我特意将期待值设定为根本不可能的”JSP”,因此这个用例执行后会出现一个错误。但请注意,由于我是特意要让测试出现错误,所以将期待值设定成了不可能的值,如果你是测试人员,请千万不要这么做,否则如果别的地方导致了错误,很容易给自己造成不必要的麻烦。
  下面简单介绍一下上边用到的静态类junit.framework.Assert。该类主要包含8个方法:
  1.assertEquals()方法,用来查看对象中存的值是否是期待的值,与字符串比较中使用的equals()方法类似;
  2.assertFalse()和assertTrue()方法,用来查看变量是是否为false或true,如果assertFalse()查看的变量的值是false则测试成功,如果是true则失败,assertTrue()与之相反;
  3.assertSame()和assertNotSame()方法,用来比较两个对象的引用是否相等和不相等,类似于通过“==”和“!=”比较两个对象;
  4.assertNull()和assertNotNull()方法,用来查看对象是否为空和不为空;
  5.fail ()方法,意为失败,用来抛出错误。我个人认为有两个用途:首先是在测试驱动开发中,由于测试用例都是在被测试的类之前编写,而写成时又不清楚其正确与否,此时就可以使用fail方法抛出错误进行模拟;其次是抛出意外的错误,比如要测试的内容是从数据库中读取的数据是否正确,而导致错误的原因却是数据库连接失败。

[1] [2] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航