JUnitEE【转】
2004-07-06 15:16
197 查看
JUnitEE 翻译:slovenboy 邮件:slovenboy AT yahoo dot com dot cn Blog:http://slovenboy.blogdriver.com 转载与发表声明:请保留译者信息并联系我 指南(Tutorial) 本指南将说明如何使用JUnitEE对EJB做单元测试。
所有的源代码在JUnitEE的分发(distribution)
的example目录中,也可以在线(http://www.junitee.org/tutorial/index.html)浏览。 实现EJB 在此指南中使用的EJB是一个简单的对两个数字求和的会话Bean。查看
org.junitee.ejb.einstein 包中的源代码来了解Bean中的工作机制。
addTwoNumbers方法有个小错误用于说明测试失败的效果,方法emc2仅
抛出一个异常来导致测试错误。 编写测试用例 测试用例是一个标准的JUnit“测试用例”(TestCase)。对于fixture,你
可以使用默认的JNDI InitialContext来获取EJB引用,如下: protected void setUp() throws Exception {
Context jndiContext = new InitialContext(); Object einRef = jndiContext.lookup("java:comp/env/ejb/EinsteinEJB");
EinsteinHome home =
(EinsteinHome)PortableRemoteObject.narrow(einRef, EinsteinHome.class); this.ein = home.create();
} 测试方法象这样编写: public void testSimpleAddition() throws RemoteException {
String result = this.ein.addTwoNumbers("7", "10");
assert(result.equals("17"));
} 测试用例的全部代码包含在示例中—查看org.junitee.ejb.einstein.test包。 创建前端Web表单 JUnitEEServlet执行由"suite"表单参数指定的测试用例,它可以出现多此。
使用一个简单的表单来开始测试: <html>
<body>
<p>
You may type in the name of a test suite:
<br/>
<form action="TestServlet" method="get" name="youTypeItForm">
<input type="text" name="suite" size=60 />
<input type="submit" value="Run" />
</form>
</p>
<hr/>
<p>
You may pick one or more of the following test suites:
<br/>
<form action="TestServlet" method="get" name="youPickItForm">
<select name="suite" size="2" multiple>
<option value="org.infohazard.test.EinsteinTest">
org.infohazard.test.EinsteinTest
</option>
<option value="some.other.Test">
some.other.Test
</option>
</select>
<input type="submit" value="Run" />
</form>
</p>
</body>
</html>
创建web.xml部署描述符
Web应用必须右部署描述符,它提供ejb-fef映射
这样“java:comp/env/ejb/EinsteinEJB” JNDI查询
才能工作。在web.xml中JUnitEEServlet和它的URL映
射也是必须的。这是一个例子: <?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app>
<display-name> Einstein Unit Tester Web Application </display-name> <servlet>
<servlet-name>JUnitEETestServlet</servlet-name>
<description>JUnitEE test framework</description>
<servlet-class>org.junitee.servlet.JUnitEEServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>JUnitEETestServlet</servlet-name>
<url-pattern>/TestServlet/*</url-pattern>
</servlet-mapping> <ejb-ref>
<ejb-ref-name>ejb/EinsteinEJB</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>org.infohazard.ejb.einstein.EinsteinHome</home>
<remote>org.infohazard.ejb.einstein.Einstein</remote>
</ejb-ref>
</web-app> 注意:Orion应用服务器在它的URL模式匹配算法中有一个缺陷,对JUnitEE
引起一些问题。如果你是用Orion,请修改部署描述符中的Servlet映射为 <servlet-mapping>
<servlet-name>JUnitEETestServlet</servlet-name>
<url-pattern>/TestServlet*</url-pattern>
</servlet-mapping> 打包用于测试的WAR文件 现在一切就绪可以打包用于测试的web应用了。必须放置 × junit.jar 和 junitee.jar 到 WEB-INF/lib
× 你的测试类到 WEB-INF/classes 或 包含测试类的jar文件到 WEB-INF/lib
× 用于测试的前端表单到 index.html
× web.xml 到 WEB-INF 最后,将所有文件使用jar命令打包为test.war并创建一个EAR文件来包含test.war和
包含Einstein Bean的EJB jar文件。 运行测试 部署EAR文件后,将你的浏览器指向test.war文件中的index.html文件并选择EinsteinTest
来执行。几秒钟后,浏览器中将显示测试报告,说明成功的和失败的测试。 = 让你的工作更简单 现在你已经了解如何创建一个包含JUnitEE servlet和你的测试类的.war文件。要创建一个war
文件需要几步,但幸运地,有一种自动执行这些步骤地方法:使用为Ant创建地JUnitEEWarTask。
看看Ant HowTo(http://www.junitee.org/antguide.html)学习更多与此任务相关地内容。 注意 当对EJB做单元测试时需要紧记的几件事: × 除非你(和任何项目中的人)非常细心的编写单元测试,否则很容易毁坏数据库。
可能你从未在一个产品系统(Production system)上运行测试,为了防止这样
做(和其他的安全原因)你不应在产品机器上启用测试Web应用。
× 对getter和setter方法进行测试或许是在浪费时间 参考 你或许会感兴趣和/或觉得有用的资源: × 获取JUnit的信息,访问JUnit主页(http://www.junit.org)。
× 了解极限编程,你可以阅读“极限编程:一般介绍”(http://www.extremeprogramming.org/)
然后访问XProgramming.com(http://www.xprogramming.com/)网站。
× 一个极好的模式,奇闻和其他有用信息的资源是Portland Pattern Repostory
(http://www.c2.com/cgi/wiki?WelcomeVisitors)网站。你可以从EjbUnitTest
(http://www.c2.com/cgi/wiki?EjbUnitTest)页面或JunitEe(http://www.c2.com/cgi/wiki?JunitEe)
页面开始。 -------------------------------- 后记 此文翻译有很多不足之处,欢迎批评指正:)
所有的源代码在JUnitEE的分发(distribution)
的example目录中,也可以在线(http://www.junitee.org/tutorial/index.html)浏览。 实现EJB 在此指南中使用的EJB是一个简单的对两个数字求和的会话Bean。查看
org.junitee.ejb.einstein 包中的源代码来了解Bean中的工作机制。
addTwoNumbers方法有个小错误用于说明测试失败的效果,方法emc2仅
抛出一个异常来导致测试错误。 编写测试用例 测试用例是一个标准的JUnit“测试用例”(TestCase)。对于fixture,你
可以使用默认的JNDI InitialContext来获取EJB引用,如下: protected void setUp() throws Exception {
Context jndiContext = new InitialContext(); Object einRef = jndiContext.lookup("java:comp/env/ejb/EinsteinEJB");
EinsteinHome home =
(EinsteinHome)PortableRemoteObject.narrow(einRef, EinsteinHome.class); this.ein = home.create();
} 测试方法象这样编写: public void testSimpleAddition() throws RemoteException {
String result = this.ein.addTwoNumbers("7", "10");
assert(result.equals("17"));
} 测试用例的全部代码包含在示例中—查看org.junitee.ejb.einstein.test包。 创建前端Web表单 JUnitEEServlet执行由"suite"表单参数指定的测试用例,它可以出现多此。
使用一个简单的表单来开始测试: <html>
<body>
<p>
You may type in the name of a test suite:
<br/>
<form action="TestServlet" method="get" name="youTypeItForm">
<input type="text" name="suite" size=60 />
<input type="submit" value="Run" />
</form>
</p>
<hr/>
<p>
You may pick one or more of the following test suites:
<br/>
<form action="TestServlet" method="get" name="youPickItForm">
<select name="suite" size="2" multiple>
<option value="org.infohazard.test.EinsteinTest">
org.infohazard.test.EinsteinTest
</option>
<option value="some.other.Test">
some.other.Test
</option>
</select>
<input type="submit" value="Run" />
</form>
</p>
</body>
</html>
创建web.xml部署描述符
Web应用必须右部署描述符,它提供ejb-fef映射
这样“java:comp/env/ejb/EinsteinEJB” JNDI查询
才能工作。在web.xml中JUnitEEServlet和它的URL映
射也是必须的。这是一个例子: <?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app>
<display-name> Einstein Unit Tester Web Application </display-name> <servlet>
<servlet-name>JUnitEETestServlet</servlet-name>
<description>JUnitEE test framework</description>
<servlet-class>org.junitee.servlet.JUnitEEServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>JUnitEETestServlet</servlet-name>
<url-pattern>/TestServlet/*</url-pattern>
</servlet-mapping> <ejb-ref>
<ejb-ref-name>ejb/EinsteinEJB</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>org.infohazard.ejb.einstein.EinsteinHome</home>
<remote>org.infohazard.ejb.einstein.Einstein</remote>
</ejb-ref>
</web-app> 注意:Orion应用服务器在它的URL模式匹配算法中有一个缺陷,对JUnitEE
引起一些问题。如果你是用Orion,请修改部署描述符中的Servlet映射为 <servlet-mapping>
<servlet-name>JUnitEETestServlet</servlet-name>
<url-pattern>/TestServlet*</url-pattern>
</servlet-mapping> 打包用于测试的WAR文件 现在一切就绪可以打包用于测试的web应用了。必须放置 × junit.jar 和 junitee.jar 到 WEB-INF/lib
× 你的测试类到 WEB-INF/classes 或 包含测试类的jar文件到 WEB-INF/lib
× 用于测试的前端表单到 index.html
× web.xml 到 WEB-INF 最后,将所有文件使用jar命令打包为test.war并创建一个EAR文件来包含test.war和
包含Einstein Bean的EJB jar文件。 运行测试 部署EAR文件后,将你的浏览器指向test.war文件中的index.html文件并选择EinsteinTest
来执行。几秒钟后,浏览器中将显示测试报告,说明成功的和失败的测试。 = 让你的工作更简单 现在你已经了解如何创建一个包含JUnitEE servlet和你的测试类的.war文件。要创建一个war
文件需要几步,但幸运地,有一种自动执行这些步骤地方法:使用为Ant创建地JUnitEEWarTask。
看看Ant HowTo(http://www.junitee.org/antguide.html)学习更多与此任务相关地内容。 注意 当对EJB做单元测试时需要紧记的几件事: × 除非你(和任何项目中的人)非常细心的编写单元测试,否则很容易毁坏数据库。
可能你从未在一个产品系统(Production system)上运行测试,为了防止这样
做(和其他的安全原因)你不应在产品机器上启用测试Web应用。
× 对getter和setter方法进行测试或许是在浪费时间 参考 你或许会感兴趣和/或觉得有用的资源: × 获取JUnit的信息,访问JUnit主页(http://www.junit.org)。
× 了解极限编程,你可以阅读“极限编程:一般介绍”(http://www.extremeprogramming.org/)
然后访问XProgramming.com(http://www.xprogramming.com/)网站。
× 一个极好的模式,奇闻和其他有用信息的资源是Portland Pattern Repostory
(http://www.c2.com/cgi/wiki?WelcomeVisitors)网站。你可以从EjbUnitTest
(http://www.c2.com/cgi/wiki?EjbUnitTest)页面或JunitEe(http://www.c2.com/cgi/wiki?JunitEe)
页面开始。 -------------------------------- 后记 此文翻译有很多不足之处,欢迎批评指正:)
相关文章推荐
- 千年零一虫
- 用Ole Automation实现Delphi和AutoCad之间的数据交换
- 我的应聘总结!
- 如何用VB获得机器的MAC地址
- Java测试规范(引用)
- 解析IP地址为主机域名
- 将某一主机域名解析为IP地址
- Struts tags (2) ----Bean(1)
- 一个画图类,类似ms_chart的线图,适用于科学仿真数据分析(一)
- GSFL:一种网格服务的工作流架构(二)
- Industry Leaders Using Internet EDI
- 利用hook截获进程的API调用
- Servlet 2.3过滤器编程(二)
- Servlet 2.3过滤器编程
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(四)
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(二)
- Pragmatic Unit Testing in Java with JUnit 书评
- TCP/IP与ATM设计(二)
- HP LoadRunner 9.5使用手记
- 插入排序,希尔排序,堆排序详解