级别: 初级 Sanjeev M Patil (sanjeev.patil@in.ibm.com), 软件工程师, IBM
2006 年 10 月 09 日 JUnitEE 是 JUnit 测试框架的一个扩展。JUnit 提供了编写单元测试的框架,而 JUnitEE 允许直接在应用服务器中运行这些测试。这为在同一运行时生产环境中测试 EJB/基于servlet的应用程序提供了有利条件。本文将会为您展示如何在 IBM Rational Application Developer 中使用 JUnitEE 对 enterprise bean 进行单元测试。
介绍
使用 JUnit 来测试 J2EE 应用程序仅仅是理想化的,因为应用服务器不能运行这些测试。而且,在测试用例中构建必需的客户端属性是一种枯燥的过程。幸运的是,JUnitEE 能够方便的用来测试你的 J2EE 应用程序。JUnitEE 是一个 JUnit TestRunner ,JUnit TestRunner 是使用 HTML/XML 作为用户界面表示的 servlet。 这意味着 JUnitEE 提供了 servlet 作为你的测试用例的入口点,并以 HTML/XML 的形式得到所需输出。如果你想自己动手开始工作,那么你需要开发 enterprise bean 并在服务器端部署它,以便你可以编写一个 JUnitEE 来测试它。好消息是我们已经为你开发好了 enterprise bean,你可以下载并在服务器中部署它。本文的目的是向你介绍如何使用 JUnitEE 测试 enterprise bean 的基本概念与步骤。
前提条件
在运行测试之前,你应当已经安装了 IBM® Rational® Application Developer v6 (IRAD)。本文假设你对IRAD很熟悉。同时假设你对Java™、Java™ 2 平台、企业版(J2EE™)和 JUnit 有一定了解。
我们还假设你已经:
- 打开了 IRAD 的 J2EE 透视图
- 配置了 IRAD 中的服务器(IBM® WebSphere® Application Server v6.0)
下载并安装简单的 EJB 项目
下载 SimpleEJBEAR.zip(从 下载 部分),解压文件并在 IRAD 中安装 SimpleEJBEAR.ear(在内置 WebSphere 服务器中部署)。 EAR 包含 Enterprise JavaBeans™(EJB™)项目(SimpleEJB),并且包含了一个简单的 Session bean (SimpleBean),这个 Session bean 拥有一个返回字符串Hello World的被称为show()的方法。
安装 SimpleEJBEAR 的步骤
打开 IRAD。选择一个新的工作空间 (sample.workspace)。如果还没选择,转换到J2EE 透视图。本文后半部分假设J2EE 透视图已被选择。
- 右键点击 Enterprise Applications。选择 Import > EAR file 如图1所示。
图1. 导入 EAR 文件
- 在导入窗口中,通过EAR file选项浏览(已下载的) SimpleEJBEAR.ear 文件。EAR Project 选项的名字应该是 SimpleEJBEAR,如图2所示。点击 Finish 按钮。
图2. 选择文件
- 在 EJB Projects 下右键点击SimpleEJB,选择 Run > Run on Server,如图3所示。
图3. 运行 EAR 项目
- 在S erver Selection 窗口中,选择所需服务器并且点击 Next,如图4所示。
图4. 选择服务器
- 确定 SimpleEJBEAR 在 Configured Projects 中,如图5所示,然后点击Finish。
图 5. 已配置的项目
当你点击 Finish时,SimpleEJBEAR 将被部署到服务器上,之后会自动打开通用测试客户端(UTC)。UTC 提供了通用的可视化界面来测试服务器端的应用程序(例如,在 EJB home objects 中创建方法)。本文关注于通过编程的方式测试服务器端的功能 - 而不是通过 UTC 完成的有限的单元测试 - 因此你可以关闭 UTC 窗口了。
创建简单的 Web 项目 (Dynamic Web Project) 创建名为SimpleJUnitEEWeb的动态 Web 项目
- 从主工具栏中,选择File > New > Dynamic Web Project,如图6所示。
图 6. 选择一个动态 Web 项目
- 在 New Dynamic Web Project 窗口中,将项目Name设为SimpleJUnitEEWeb。如果默认没有选择,那么点击Show Advanced 按钮(也就是,如果Hide Advanced按钮出现,则忽略这一步)。从组合选择框中选择 SimpleEJBEAR 作为EAR project 的值,点击 Next,如图7所示。
图7. 选择SimpleEJBEAR 项目
- 添加被依靠的的JAR 文件,并且点击Finish,如图8所示。
注意:如果你被提示切换到另一透视图,选择No(你需要留在 J2EE 透视图)
图 8. 添加被依赖JAR 文件
在 Dynamic Web Project(SimpleJUnitEEWeb)中创建 JUnit 类
把 junit.jar 和 junitee.jar(可在 参考资料 部分下载)放在 SimpleJunitEEWeb\WebContent\WEB-INF\lib 目录下 ,如图9所示(用 导入 或 复制 与 粘贴 将其放在lib目录中)。
图9. 在 lib 目录中放入文件
- 右键点击 SimpleJunitEEWeb 项目并选择New > Other,如图10所示。
图 10. 打开一个新的项目
- 在新窗口中点击 Java > JUnit > JUnit Test Case 然后点击 Next,如图11所示。
图 11. 启动测试用例
- 添加 JUnit Test 类详细信息:
- 在 Package 下输入
com.ibm.basic.bean.test
- 输入
SimpleBeanTest作为 Class name
- 选中 setup()、teardown() 和 constructor() 复选框
- 点击 Class Under Test 中的 Browse,如图12所示。
图12. 添加类详细信息
- 在 Class Under Test 窗口中输入 SimpleBean:
在 Qualifier 下,选择com.ibm.basic.bean 包并点击OK,如图 13 所示。
图 13. 选择需要测试的类( Class Under Test)
- 点击 Next,如图 14所示,
图 14. 下一步
- 在 SimpleBean下选择 show()方法,点击 Finish,如图 15所示。
图15. 完成
编辑 SimpleBeanTest
从SimpleJUnitEEWeb > Java Resources > Java Source > com.ibm.basic.bean.test 打开 JUnit 类 SimpleBeanTest
编辑如下所列的类(添加高亮显示的值),并 保存 文件。
/*
* Created on Nov 14, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.ibm.basic.bean.test;
import java.rmi.RemoteException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import com.ibm.basic.bean.Simple;
import com.ibm.basic.bean.SimpleHome;
import junit.framework.TestCase;
/**
* @author Sanjeev M Patil
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class SimpleBeanTest extends TestCase {
protected Simple simple = null;
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
Context jndiContext = new InitialContext();
Object einRef=jndiContext.lookup("ejb/com/ibm/basic/bean/SimpleHome");
SimpleHome home=(SimpleHome)PortableRemoteObject.narrow(einRef,SimpleHome.class);
this.simple = home.create();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Constructor for SimpleBeanTest.
* @param arg0
*/
public SimpleBeanTest(String arg0) {
super(arg0);
}
public void testShow() throws RemoteException {
String show = simple.show();
assertEquals("Hello World",show);
}
}
|

 |

|
添加文本文件以列出 testCase 类
在SimpleJUnitEEWeb > Web Content> WEB-INF下添加名为 testCase.txt 的文件
- 右键点击WEB-INF (SimpleJUnitEEWeb > Web Content> WEB-INF)。
选择New > Other,如图 16所示。
图 16. 添加文本文件
- 在新窗口中选择Simple > File,点击 Next,如图 17所示。
图 17. 选择文件
- 在File Name文本域中输入
testCase.txt并点击Finish,如图 18所示。
图18. 指定文件名
打开 testCase.txt 并添加 com.ibm.basic.bean.test.SimpleBeanTest, 然后 保存 文件。
你的文件应当如图19所示。
图 19. 修改过的文件
编辑 web.xml
从SimpleJUnitEEWeb > Web Content> WEB-INF中双击打开 web.xml (Web 配置描述符) 文件 (它已存在于项目中)。以如下代码代替 Source 标签中的内容,然后保存文件。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>SimpleJUnitEEWeb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description> JUnitEE test runner</description>
<display-name> JUnitEEServlet</display-name>
<servlet-name>JUnitEEServlet</servlet-name>
<servlet-class>org.junitee.servlet.JUnitEEServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JUnitEEServlet</servlet-name>
<url-pattern>/TestServlet/*</url-pattern>
</servlet-mapping>
</web-app>
|
运行项目
选择 SimpleJUnitEEWeb 项目。
右键点击这个项目,并选择 Run > Run on the Server, 然后点击 Finish。
IRAD 将使用 URL http://localhost:9080/SimpleJUnitEEWeb 启动 Web 浏览器。
编辑 URL 成为 http://localhost:9080/SimpleJUnitEEWeb/TestServlet
- 你应当在浏览器中看到如下信息。
图 20. TestServlet
- 点击Run all 按钮,你会看到如图21的结果。
图21. 结果
测试你的基于EJB的应用程序
正如你能看到的,JUnitEE 使得应用服务器可以很容易的运行你的测试。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| Sample EJB project for this article | simpleejbear.zip | 52 KB | HTTP |
|---|
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Sanjeev M Patil 是一名在 IBM 从事 Business Resilience 工作的系统软件工程师,Business Resilience 是 IBM 随需应变路线图中的重要部分。他拥有印度 Karnataka MCE Hassan 的机械工程学士学位。Sanjeev 的邮件地址是sanjeev.patil@in.ibm.com |
对本文的评价
|