要运行此测试实例,将源文件(IsoDate.java和IsoDateTest.java)拷贝到Junit的安装目录下,打开终端,进入该目录,然后输入以下命令行(如果你正在使用UNIX):
export CLASSPATH=.:./junit.jar
javac *.java
或者,如果你正在Windows,输入以下命令行
set CLASSPATH=.;junit.jar
javac *.java
这些命令行对CLASSPATH进行设置,使其包含当前目录中的类和junit.jar库,并编译Java源文件。
要在终端上运行该测试,输入以下命令行:
java junit.textui.TestRunner IsoDateTest
此命令行将运行该测试,并在图 1所示的控制台上显示测试结果。
才在此工具可以运行类名被传递到命令行中的单个测试。注意:只有对命令行的后测试才在考虑之内,以前的测试都被忽略了。(看起来像一个程序错误,是吧?)
JUnit还提供了利用AWT(抽象窗口工具包)或Swing运行测试的图形界面。为了利用此图形界面运行测试,在终端上输入以下命令行:
java junit.awtui.TestRunner IsoDateTest
或者使用Swing界面:
java junit.swingui.TestRunner IsoDateTest
此命令行将显示图 2所示的界面。要选择一个测试并使其运行,点击带有三个点的按钮。这将显示CLASSPATH(还有测试包,但我们将在后面讨论)中所有测试的列表。要运行测试,点击"Run"按钮。测试应当正确运行,并在图 2所示的界面中显示结果。
在此界面中你应当选中复选框"Reload Classes Every Run",以便运行器在运行测试类之前对它们进行重新加载。这样可以方便地编辑、编译并运行测试,而不需要每次都启动图形界面。
在该复选框下面是一个进度条,在运行较大的测试包时,该进度条非常有用。运行的测试、错误和失败的数量都会在进度条下面显示出来。再下面是一个失败列表和一个测试层次结构。失败消息显示在底部。通过点击Test Hierarchy(测试层次结构)面板,然后再点击窗口右上角的"Run"按钮,即可运行单个测试方法。请记住,使用命令行工具是不可能做到这些的。
注意,当运行工具来启动测试类时,这些类必须存在于CLASSPATH中。但是如果测试类存储在jar文件中,那么即使这些jar文件存在于CLASSPATH中,JUnit也不能找到这些测试类。
这并不是一种启动测试的方便方法,但幸运的是,JUnit已经被集成到了其他工具(如Ant和Oracle9i JDeveloper)中,以帮助你开发测试并使测试能够自动运行。
编写Junit测试实例
你已经看到了测试类的源代码对IsoDate实施进行了询问。现在让我们来研究这样的测试文件的实施。
测试实例由junit.frameword.TestCase继承而来是为了利用JUnit框架的优点。这个类的名字是在被测试类的名字上附加"Test"。因为你正在测试一个名为IsoDate的类,所以其测试类的名字是IsoDateTest。为了访问除私有方法之外的所有方法,这个类通常与被测类在同一个包中。
注意,你必须为你希望测试的在类中定义的每个方法都编写一个方法。你要测试构造器或使用了ISO日期格式的方法,因此你将需要为以ISO格式的字符串作为参数的构造器和toString()方法编写一个测试方法。其命名方式与测试类的命名方式类似:在被测试方法(或构造器)前面附加"test"。