<tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td _fcksavedurl=""//www.ibm.com/i/c.gif"/></td><td" _fcksavedurl=""//www.ibm.com/i/c.gif"/></td><td" width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif"/></td><td class="small" width="122"><p><span class="ast">未显示需要 JavaScript 的文档选项</span></p></td></tr>
<script type="text/javascript" language="JavaScript">
</script>
级别: 初级
Sanjeev M Patil (sanjeev.patil@in.ibm.com ), 软件工程师, IBM
2006 年 10 月 09 日
个人很不喜欢玩EB,但是由于公司的老系统要做MIGRATION,修改了代码,同时我们得做testing,郁闷ing…… JES Migration 。。。
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 FTP
参考资料
学习
获得产品和技术
讨论
关于作者
Sanjeev M Patil 是一名在 IBM 从事 Business Resilience 工作的系统软件工程师,Business Resilience 是 IBM 随需应变路线图中的重要部分。他拥有印度 Karnataka MCE Hassan 的机械工程学士学位。Sanjeev 的邮件地址是sanjeev.patil@in.ibm.com