编写和运行 JUnit 测试

在本节中,将使用 JUnit 测试框架来编写并运行测试。要开始使用 JUnit,您可以参考 JUnit Cookbook

编写测试

在可以编写 JUnit 测试前,必须将 junit.jar 库添加至构建类路径。Eclipse 安装将 JUnit 包括在 org.junit 插件中:

  1. 创建项目“JUnitTest”
  2. 打开项目的构建路径属性页面
  3. 切换至选项卡
  4. 将包含在插件目录中的 org.junit 中的 junit.jar 作为外部 JAR 添加到项目中。
(可选)如果要浏览 JUnit 源,则将 junitsrc.zip 连接至 junit.jar。源 zip 文件位于 src/org.junit_3.8.1 中的 org.eclipse.jdt.source 插件中。

既然 JUnitTest 项目可以访问 JUnit 类,您可以编写第一个测试了。在 TestCase 的子类中实现测试。可以通过使用标准的“类”向导或特殊的测试案例向导来执行此操作:

  1. 打开“新建”向导(文件 > 新建 > 其它...
  2. 在左窗格中选择 Java > JUnit,在右窗格中选择 TestCase 并单击下一步
  3. 输入“TestFailure”作为测试类的名称:

    “测试案例”创建向导页面 1

  4. 单击完成以创建测试类。

将发生故障的测试方法添加至 TestFailure 类。输入测试方法的快速方法是使用 test 模板。为此,输入“test”并按 Ctrl+空格键以激活代码辅助并选择“test”模板。将创建的方法的名称更改为 testFailure 并调用 fail() 方法。

public void testFailure() {
    fail();
}

现在,您已经准备好运行第一个测试了。

运行测试

要运行 TestFailure,激活工具栏中的运行下拉菜单并选择运行方式 > JUnit 测试。可以在 JUnit 视图中检查测试结果。此视图将显示测试运行进度和状态:

发生故障的测试

每当启动测试运行时,此视图都会显示在当前透视图中。JUnit 视图的一个便捷安排是将它作为快速视图停放。JUnit 视图有两个选项卡:一个显示故障列表,另一个将整个测试套件显示为一颗树。可以通过双击故障跟踪中的相应行来从故障浏览至相应的源。

将 JUnit 视图作为快速视图停放,除去方法 testFailure() 中的 fail() 语句,以便通过测试并再次运行该测试。可以通过单击视图的工具栏中的重新运行按钮来重新运行测试,也可以通过激活运行下拉菜单来重新运行最后启动的程序。这次,测试应该会成功。因为测试成功,所以不会弹出 JUnit 视图,但是成功指示符显示在 JUnit 视图图标上,并且状态行将显示测试结果。为了提醒您重新运行测试,在运行后,每当更改工作区内容时,视图图标都会标有“*”。

成功的测试 — 成功的测试运行
成功的测试,但是工作区已更改 — 成功的测试运行,但是自从上次测试运行之后,工作区内容已更改。

除了象上面描述的那样运行测试案例之外,还可以:

定制测试配置

当要传递参数或定制测试运行的设置时,请打开“启动配置”对话框。在工具栏中的运行下拉菜单中选择运行...

JUnit 启动配置

在此对话框中,可以指定要运行的测试、它的自变量、它的运行时类路径和 Java 运行时环境。

调试测试故障

在发生测试故障时,可以遵循下列步骤来调试它:

  1. 从 JUnit 视图的堆栈跟踪中双击故障条目,以在编辑器中打开相应的文件。
  2. 在测试方法的开头设置断点。
  3. 选择测试案例并从调试下拉菜单中执行调试方式 > JUnit 测试

JUnit 启动配置具有“保持活动”选项。如果 Java 虚拟机支持“热代码替换”,则可以修正代码并重新运行测试,而不必重新启动整个测试运行。要启用此选项,选择 JUnit 启动配置中的调试时,在测试运行后保持 JUnit 运行复选框。

创建测试套件

JUnit 的测试套件向导帮助您创建测试套件。可以选择一组应当属于某个套件的类。

  1. 打开“新建”向导
  2. 在左窗格中选择 Java > JUnit,在右窗格中选择 TestSuite 并单击下一步
  3. 输入测试套件类的名称(约定为使用“AllTests”,缺省情况下将显示此名称)。

    测试套件向导

  4. 选择应包括在套件中的类。我们当前只有一个测试类,但是以后可以对套件进行添加。

可以通过两种方法对测试套件添加或除去测试类:

注意:向导将两个标记(//$JUnit-BEGIN$//$JUnit-END$)放到 已创建的测试套件类中,这允许向导更新现有的测试套件类。不建议在两个标记之间编辑代码。

Copyright (c) 2000, 2003 IBM Corporation and others. All Rights Reserved.