单元测试作业指导书(三)

单元测试作业指导书(一) 这是我以前任项目经理时,编写的关于单元测试方面的作业指导书,针对多种开发环境叙述怎么进行单元测试以及环境配置,现在整理了一下。应该对大家有所帮助。  这是第一部分,主要针对C和C++项目的(包括了Windows环境和Linux环境),下部分将针对Java及J2EE项目。 1.      目的为了减少代码中的错误数量, 减少调试所花的时间和精力, 改善软件质量, 减少开发和维 阅读详情

3.3.2 使用Junit测试EJB

3.3.2.1安装JUnit和JunitEE

你需要将junit.jar和junitee.jar加入到J2EE应用程序的CLASSPATH中。       一般地,将jar文件拷贝到服务器的根目录下的lib目录中就可以了。注意:该目录下的文件一般不能被动态加入,所以你需要重新启动应用服务器。

3.3.2.2准备一个EJB例子

你可以在JunitEE安装目录的example子目录下找到一个作为示例的EJB。你要先组织该示例,保证它是可以工作的。否则,注意发生了什么事情。你要编辑build.xml文件按照你计算机的具体情况更新文件中的路径。然后在build文件所在的目录下运行“ant”。

《something》

运行该例子的结果是得到名为junitee-example.ear的文件。该文件在名为out的子目录中。它包含一个简单的无状态EJB,一个使用了EJB的应用程序和测试web应用程序。这是一个标准的J2EE企业级的文档,可以安装在任何的应用服务器上。

 

如果你想手工的写出所有的部分,就删除example目录下的components/test-war子目录,本文下面的部分就是说明如何构建测试。

3.3.2.3创建目录结构

要创建一个Web应用程序测试,首先你要创建目录结构。创建下面的子目录:

    example/javasrc/org/infohazard/test/

    example/components/test-war/

    example/components/test-war/WEB-INF/

本示例将测试用例放置在org.infohazard.test包中。如果你想测试包内的私有方法,则要将测试用例和要测试的class文件放置在同一个包中。由于绝大多数的测试发生在public接口层,所以你要考虑是不是要这样做。

3.3.2.4编写测试用例

测试用例是标准的JUnit测试用例。对于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"));
}

这些代码属于example/javasrc/org/infoazard/test/EinsteinTest.java

3.3.2.5使用 servlet来运行测试用例

下面是一个包括在junit.htmlui包中的servlet,但是你不可以直接使用它。你必须在你的web应用程序的WEB-INF/classes/下创建一个servlet,这个servlet来源于junit.htmlui.TestServletBase并且增加了下面的细节:

protected ClassLoader getDynamicClassLoader()

{

       return this.getClass().getClassLoader();

}

使用这个servlet,我们使用动态的类载入器欺骗应用服务器,这样不必使用缺省的类载入。如果我们不这样做,每次改变的测试类文件都要重新启动web应用服务器。

如果你的应用程序服务器不能动态地重新载入修改过的class文件,这一步对你来说是没有帮助的。你不得不重新启动服务器,因为TestServletBase被声明为abstract类型。

3.3.2.6创建UI表格

<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>

将此保存为example/components/test-war/index.html文件。

3.3.2.7 创建web.xml配置描述器

Web应用程序必须有一个配置描述器,它提供了ejb-ref映射,使得"java:comp/env/ejb/EinsteinEJB" JNDI lookup生效,and so that the TestServlet gets mapped to some sort of URI.下面是web.xml的示例:

<?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.infohazard.servlet.TestServlet</servlet-class>
   </servlet>
 
   <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>
 
   <servlet-mapping>
            <servlet-name>JUnitEETestServlet</servlet-name>
            <url-pattern>/TestServlet</url-pattern>
   </servlet-mapping>
</web-app>

保存成:example/components/test-war/WEB-INF/web.xml。

 

3.4 单元测试完毕后,程序员将测试用例交与项目经理,由项目经理进行单元测试的检查,完成单元测试报告,对测试的情况进行总结说明。

 

注意:以上所述仅是测试J2EE的一种方式而已,我们还可以结合HttpUnit和Jakarta Cataus来进行J2EE项目的单元测试。这些完全借助于工具的方式还是有一定的缺陷,所以在去年的时候我根据XP中的Mock Object理论的一些指导,在HttpUnit的基础上编写了一套完全脱离J2EE运行环境(比如Weblogic等)的单元测试套件,以及压力测试和功能测试套件,在这一组工具的支持下才算作好了J2EE项目的单元测试。

 

头歌实训作业答案c++ 1. **类和对象**:学习如何设计类和对象,以及如何使用访问修饰符(`public`、`private`、`protected`)。2. **控制结构**:掌握`if`、`switch`、`for`、`while`和`do-while`循环等控制语句。1. **STL容器**:熟悉标准模板库(STL)中的容器,如`vector`、`list`、`map`等。5. **引用和内存管理**:了解引用的概念和动态内存分配(`new`和`delete`)。 阅读详情

相关推荐

单元测试详细作业指导书

对单元测试进行详细介绍 单元测试作业指导书(一)-C和C++部分.doc 单元测试作业指导书(二)-JAVA部分.doc 单元测试作业指导书(三).doc 单元测试作业指导书(四)-JUnit的使用部分.doc

单元测试指引

单元测试指引一、序言什么是单元测试为什么要使用单元测试如何进行单元测试(单元测试的指导性原则)二、JUnit介绍构建单元测试遵循命名习惯测试代码必须要做的几件事情注意:当执行测试代码的时候,请记住你从来不直接运行产品代码JUnit的各种断言断言:JUnit提供了一些辅助方法,用于帮助你确定某个被测试方法是否工作正常。通常而言,我们把这些辅助方法统称为“断言”。断言是单元测试最基本的组成部分。ass...

hello441373477的博客 561

软件测试作业指导书

软件测试作业指导书

单元测试作业指导书(四)

这一部分是Junit工具的简单使用说明,作为作业指导书的附件。 本文简单地介绍了如何使用Junit编写和组织自己的单元测试代码。 l         简单的测试用例如何写测试代码呢?最简单的方式当然是在调试器中写成表达式的形式。你不必重新编译程序就可以改变调试表达式,并且你可以等看到了具体运行的对象再决定写什么样的调试表达式。另一种方式就是编写调试表达式输出一些东西到标准的输出

samlet的专栏 1348

Tomcat、Apache、Nginx、IIS、Weblogic中间件等保测评作业指导书V1.1

等保常见中间件测评指导书(供参考),也可作为中间件加固参考使用

单元测试指导,基本方法,重点,小技巧介绍和举例以及小结

单元测试指导,基本方法,重点,小技巧介绍和举例以及小结

单元测试作业指导书(二)

这是我以前任项目经理时,编写的关于单元测试方面的作业指导书,针对多种开发环境叙述怎么进行单元测试以及环境配置,现在整理了一下。应该对大家有所帮助。这是第二部分。 3.3  JAVA标准3.3.1测试环境使用JSDK1.33.3.1.1前题:使用JUnit3.7版,解压后,路径为x://junit3.7;使用Ant1.3版,解压后,路径为x://ant1.3; 配

samlet的专栏 1180

软件测试手册(完整版)

很好的介绍软件测试方面的文档,是学习软件测试很有用的书籍 用法:右击文件--属性--解除锁定--打开文件

光伏电站项目施工作业指导书(WORD)

本文系统梳理了光伏电站施工全流程及软件项目管理文档体系。施工部分涵盖前期准备、安装过程(包括材料进场、基础制作、设备安装等9个环节)及系统调试。文档管理部分详细列出了软件项目全生命周期所需的86类文档,包括需求分析、设计开发、测试验收等各阶段文件,以及建设方案资料清单(含智慧城市、医疗信息化等20类技术方案)。完整资料可通过文末联系方式获取。

2302_79423711的博客 306

单元测试工作指南 doc

单元测试工作指南单元测试工作指南单元测试工作指南

等保三级应用测评指导书

等保三级应用测评指导书

单元测试作业指导系列讲座之一

这是我以前任项目经理时,编写的关于单元测试方面的作业指导书,针对多种开发环境叙述怎么进行单元测试以及环境配置,现在整理了一下。应该对大家有所帮助。   这是第一部分,主要针对C和C++项目的(包括了Windows环境和Linux环境),下部分将针对Java及J2EE项目。  1. 目的   为了减少代码中的错误数量, 减少调试所花的时间和精力, 改善软件质量, 减少开发和维护的时间和成本。   2

snowphy的专栏 940

信息安全等级保护测评作业指导书(Weblogic).doc

信息安全等级保护测评作业指导书(Weblogic)

面向对象先导课程博客作业

不知不觉间,面向对象先导课程(OOpre)已经迎来了尾声。在过去的半个学期里,我们在课上学习了 Java 开发的基本知识,在课下完成了大作业的 5 次迭代和 2 个小作业。这些都为下个学期的面向对象课程(OO)打下了基础。

EricQ2017的博客 218

模拟IC实战—30天精通Sigma-delta(Σ-Δ) ADC 行为级建模与仿真

本文为模拟IC工程师提供了一套为期30天的Sigma-delta ADC行为级建模与仿真实战指南。文章深入浅出地阐释了Sigma-delta ADC如何通过过采样和噪声整形两大核心技术实现高精度转换,并重点演示了如何使用Python从零搭建一阶和二阶调制器模型,进行性能仿真与关键指标分析,为后续电路级设计提供清晰的性能预算和架构指导。

weixin_29237635的博客 399

Ubutntu下使用realsense d435i(二):获取某二维像素点的三维坐标

00 准备工作 准备工作包括安装驱动以及pyrealsense2,具体可参考上一篇: Ubutntu下使用realsense d435i(一):准备工作以及安装pyrealsense2 https://blog.youkuaiyun.com/gyxx1998/article/details/121461293 01 通过二维像素点获得物体三维坐标 这个在上一篇已经介绍了代码: realsense d435i获取某像素点三维坐标(计算深度和点云两种方法) https://blog.youkuaiyun.com/gyxx1998/

gyxx1998的博客 9944

【OO学习】OO第四单元作业总结及OO课程总结

【OO学习】OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结   这两次作业架构思路上是一样的。 通过将需要使用的UmlElement,封装成Element的子类。每个子类存储相应的UmlElement,以及需要保存的信息。比如,Class类里保存着这个类的属性、方法以及关系、父类、实现的接口等信息。 Element抽象类有一个...

weixin_30354675的博客 170

STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化策略

本文深入探讨了STA静态时序分析中标准单元库的高级功耗建模与优化策略。详细解析了动态功耗和漏电功耗的精细建模技术,包括基于波形敏感的CCS模型和温度敏感的漏电模型,并介绍了多工艺角功耗建模及低功耗设计优化策略,为纳米级芯片设计提供关键能效解决方案。

weixin_29290863的博客 224

Junit总体描述的不错网址

1. 测试框架Junit   http://www.worlduc.com/blog.aspx?bid=1889 2. 用Junit实现java单元测试  http://www.bitscn.com/plus/view.php?aid=23359 3. 单元测试作业指导书Ju

gukesdo的专栏 756

基于Java+SpringBoot+Vue的中小企业设备管理系统的设计与开发(源码+lw+部署文档+讲解等)

💗博主介绍:✌新人博主,工作经验两年+、专注于Java、小程序技术领域和毕业项目实战✌💗🌟文末获取源码+数据库🌟

2301_76502068的博客 1383

使用Qt在FreeRTOS上构建MCU应用程序

如果我们想要在FreeRTOS上运行该应用程序,我们需要选择适用于我们处理器架构的交叉编译工具链,并将目标设备设置为我们的开发板。在该代码中,我们使用xTaskCreate()函数创建了一个名为“qt_task”的任务,并将其启动。首先,我们需要安装Qt for MCU开发环境。Qt for MCU是基于Qt 5开发的针对MCU的特殊版本,它可以生成最小体积的代码,从而适用于资源有限的嵌入式系统。如果我们想要在FreeRTOS上运行这个程序,我们需要将其包装在一个任务中,并在任务创建后启动Qt的事件循环。

ByteWhizX的博客 1815

BUAA_OO_博客作业4——UML图及总结

一、总结本单元两次架构设计 作业1: 第一次作业需要使用给定的接口,对一个类图进行解析。 由于观察mdj文件的组织形式是类似树的,因此我大部分的组织形式也跟树相似。并且优先构造Class和Interface,之后再把属性、操作、参数等加入其中,防止接口传入的UmlElement不按照顺序出牌 对于所有的功能,基本都设置了缓存的查找方式:假若没有算过,则当即算一遍;如果已经有结果了,那么直接...

weixin_30675967的博客 185

第1讲|AI产品经理全景图谱:不是“会用AI工具”,而是能对AI产品结果负责

本文从岗位本质出发,系统拆解 AI 产品经理的职责、岗位类型与能力模型,帮助读者理解 AI PM 与传统 PM 的核心差异,明确自己适合的转型方向,并建立“对 AI 产品结果负责”的产品认知。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1016
上一篇: 单元测试作业指导书(四)
下一篇: Windows Media Services研究
samlet
博客等级 码龄26年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值