测试用例看起来就像产品代码,对于您的 EJB, 通过 facade 模式,它们可以使用相同的 Java bean。
通过使用一个 Ant 脚本可以使测试自动化。
利用 JUnit 和 JUnitEE 进行单元测试的例子
这个部分向您展现了如何利用 JUnit 和 JUnitEE 测试框架的优势对一个在 Rational Application Developer IDE 中开发的简单的无状态 session EJB 进行单元测试。这个 EJB 仅仅添加了两个数字就返回这些数字的总和。尽管这只是一个微不足道的功能,但是它包含了阐明这个例子的所有必要条件。这个系列的第 3 部分提供了 EJB 如何在 Rational Application Developer 软件内部构建和单元测试的逐步的示范。 [Page]
简单地说,这个例子是一个无状态 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;
public class BasicCalculator {
public double addTwoNumbers(double first, double second)
{
return first + second;
}
}
步骤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;
/**
* Bean implementation class for Enterprise Bean: BasicCalculator
*/
public class BasicCalculatorBean implements javax.ejb.SessionBean {
private javax.ejb.SessionContext mySessionCtx; [Page]
public javax.ejb.SessionContext getSessionContext() {
return mySessionCtx;
}
public void setSessionContext(javax.ejb.SessionContext ctx) {
mySessionCtx = ctx;
}
public void ejbCreate() throws javax.ejb.CreateException {
}
public void ejbActivate() {
}
public void ejbPassivate() {
} public void ejbRemove() {
} public double addTwoNumbers(double first, double second) {
return first + second; }
}
步骤 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;
import calc.BasicCalculator; [Page]
import junit.framework.TestCase;
public class BasicCalculatorTest extends TestCase {
BasicCalculator aBasicCalculator = null;
/*
* Setup before each test case
*/
protected void setUp() throws Exception {
super.setUp();
aBasicCalculator = new BasicCalculator();
}
public void testSimpleAdditionNotSame() throws Exception {
double result = aBasicCalculator.addTwoNumbers(2, 2);
assertNotSame(\"2+2 does not = 5\", new Double(result), new Double(5));
}
public void testDesignedToFail() throws Exception {
double result = aBasicCalculator.addTwoNumbers(1, 1);
assertTrue(\"1 + 1 = 3\", result == 3);
}
public void testSimpleAddition() throws Exception {
assertTrue(\"Calculator instance is not null\", aBasicCalculator != null);
double result = aBasicCalculator.addTwoNumbers(2, 2);
assertTrue(\"2+2=4\", result == 4); }
}
文章来源于领测软件测试网 https://www.ltesting.net/