此外, JUnit 测试用例可以从 Rational Application Developer 的IDE 运行或者在 Ant 构成脚本中自动运行。
JUnit 还通过利用 junit.framework.TestSuite 类提供了一种将测试归组为测试套件的方法。一个测试套件是由您能够在相同时期运行的相关测试组成的。下面有两种 JUnit 运行测试比较便利的方法:
- 对于第一种方法,您可以通过使用这个命令将测试用例传递到 TestSuite 构造器:
TestSuite suite= new TestSuite(testAddJava.class) 在这种情况下,TestRunner 将所有带测试前缀的测试程序挑选出来,然后自动运行每一个测试用例。 - 另一个可选的方法是,通过使用 TestSuite.addTest 方法添加每个测试用例:
TestSuite suite = new TestSuite(); suite.addTest(new AddJavaTest("testSimpleAddition"));
JUnitEE 测试框架
JUnit 提供了一个对客户端 Java 应用软件进行单元测试的有效且简便的方法,但是它仍有一些局限性;因此,在每一个应用软件服务器的容器中进行测试变成了一个冗长且乏味的过程。IBM Rational Application Developer 平台提供的 Web-based Universal Test Client (UTC) 特性为 Enterprise JavaBeans (EJBs) 提供了一个无缝的完整的单元测试机制。然而,Rational Application Developer UTC 是一个交互式的单元测试机制,因此当进行自动单元测试时它显得有些不足。
JUnitEE 测试框架就是解决这些局限性的,同时还处理这个冗长而乏味的过程。这个框架延伸了标准的 JUnit,从而使它能够在应用服务器容器中执行单元测试。它在单元测试软件的 J2EE Web 模块中配置,利用 TestRunner 输出 HTML 或者 XML 测试结果。它还包含一个登陆到 JUnit 测试用例登陆口的 TestServlet。因此,根据 JUnitEE.org 的说法, 将您的测试工具构建为一个标准的 J2EE Web 有以下几点好处:
- 测试在 J2EE Web 模块中已经打包(以 WAR 文件的形式),这样便于部署和执行。
- 测试用例看起来就像产品代码,对于您的 EJB, 通过 facade 模式,它们可以使用相同的 Java bean。
- 通过使用一个 Ant 脚本可以使测试自动化。
利用 JUnit 和 JUnitEE 进行单元测试的例子
这个部分向您展现了如何利用 JUnit 和 JUnitEE 测试框架的优势对一个在 Rational Application Developer IDE 中开发的简单的无状态 session EJB 进行单元测试。这个 EJB 仅仅添加了两个数字就返回这些数字的总和。尽管这只是一个微不足道的功能,但是它包含了阐明这个例子的所有必要条件。这个系列的第 3 部分提供了 EJB 如何在 Rational Application Developer 软件内部构建和单元测试的逐步的示范。
简单地说,这个例子是一个无状态 session bean 的单元测试。然而,您也可以利用 JUnit 和 JUnitEE 测试框架对其它类型的 EJB 进行单元测试。这里这个简单的方法包含以下几个步骤:
- 创建一个简单的 Java bean 计数器。
- 为基本的计数器创建一个 EJB。
- 创建一个 EJB 客户。
- 开发 JUnit 测试用例对 Java 应用软件和这个计数器 EJB 进行测试。
- 创建一个 JUnitEE 测试模块,并对它进行配置。
- 在 WebSphere Application Server 环境中部署并执行测试用例。
您可以下载这篇文章中所有例子的源代码(请看参考资源)。
步骤 1. 创建一个简单的 Java bean 计数器
第一个例子是一个简单的 Java 应用软件,它添加了两个数字并返回了它们的和。代码列表 2显示了这个类执行。
列表 2. 基本的 Calculator Java Bean 的执行
package calc; |
步骤2. 为基本的计数器创建一个 EJB
利用 Rational Application 开发者产生一个无状态 bean 称作 BasicCalculator。
代码列表 3 包含一个 EJB 即将呈现的样例。
BasicCalculatorBean EJB 类包含一个业务方法,addTwoNumbers,服务于计数器功能的。 这个业务方法添加在一个远程的接口中,使客户能够访问这个方法。EJB 可以是远程的、分布的对象。Rational Application Developer IDE 产生的客户端工件能够很容易的对远程目标进行访问。测试应用软件可能在一个分离的 Enterprise Archive (EAR) 中,因此我们利用远程而不是本地接口来访问 EJB。(本系列的第 3 部分显示了如何利用 IDE 的智能指南创建客户端工件)。
列表 3. Basic Calculator EJB 的实现
package ejbs; |
步骤 3. 产生一个 EJB 客户端
在这个步骤中,按照 Rational Application Developer 的智能指导产生客户端工件。这些步骤在这个文章系列的第 3 部分将会有示范。
步骤 4. 开发 JUnit 测试用例来测试 Java 和计数器 EJB
当您实现完 Java Bean Calculator、 Basic Calculator EJB 以及客户 EJB 之后,您就可以编写 JUnit 测试用例了。
利用 JUnit 对 Java 应用软件进行单元测试
这里,您可以利用列表 1中概述的 JUnit 测试结构的优势来编写三种对 BasicCalulator Java Bean 和 EJB 进行单元测试的方法。
列表 4 中的单元测试列举了各种断言方法来执行正面与反面的单元测试。它有以下几种测试方法:
- testSimpleAddition()方法包含两个论断。第一个宣称这个计数器实例对象不是空,就像它实际存在一样。第二个验证通过与期望值4 相比较,这个计数器准确地将2加上2。
- testSimpleAdditionNotSame()方法展示了负面的测试,确保两个截然不同的值是不一样的。也就是说,这两个数字(2+2)的和不是等于5的。
- testDesignedToFail()方法论证了 JUnitEE 框架中一个失败的测试用例看起来是什么样的。在这个测试用例中,两个自变量,1和1是通过 BasicCalculator 来相加的,然后再将所得的值与3相比较。这个测试失败了。结果向您展示了在哪里以及为什么失败了。
列表 4. Calc Java Bean 的 JUnit Test
package calc.test; |
文章来源于领测软件测试网 https://www.ltesting.net/