单元测试工具调研报告_第1页
单元测试工具调研报告_第2页
单元测试工具调研报告_第3页
单元测试工具调研报告_第4页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-精选文档 -单元测试工具调研报告一、单元测试目的单元测试( unit testing),是在软件开发过程中要进行的最低级别的测试活动。单元测试测试用于验证软件最小的可执行单元的正确性,即类或方法的正确性,其目的在于发现各模块内部可能存在的各种差错,验证代码是与设计相符合的,发现设计和需求中存在的错误 ,发现在编码过程中引入的错误。主要是基于白盒测试。二、单元测试的好处1、编写单元测试的时间节约了未来的修改、维护低质量代码的时间。2、单元测试也是设计的一部分,会促使程序员以使用者的角度重新审视自己的代码,使写出的代码易于使用。3、当程序被修改时,通过快速的单元测试能够找到修改后存在的漏洞。三、

2、如何进行单元测试1、写一点,测一点1. 每写完一个程序单元就开始编写单元测试代码2. 将程序划分为尽可能小的单元,这样更有利于单元测试的编写。2 、单元测试的内容1. 通用的业务组件,或工具类2. 内外部接口3. 包含重要逻辑的 Service4. 程序员自己觉得没有把握的代码3 、单元测试的策略5. 尽早进行单元测试可编辑-精选文档 -6. 对于新增加的功能和修改的功能要进行完善单元测试7. 对于新发现的 bug ,通常也应增加相应的单元测试四、常用单元测试工具1.Arquillian(开源)Arquillian是 JVM 一个高度创新性和可扩展的测试平台,支持Java 开发人员轻松创建自动

3、化集合的,功能性的和验收的测试。Arquillian允许在运行时间执行测试。 Arquillian可以用来管理单个或多个容器的生命周期,捆扎测试用例,从属类和资源。它还能够部署归档到容器中,在容器中执行测试、捕获结果,并创建报告。 Arquillian集成了常见的测试框架,如JUnit4 、TestNG5 ,并允许使用现有的IDE 发布测试,并且由于其模块化的设计使得能够运行Ant和 Maven测试插件。2.JTest (商用)JTest 也被称为“ParasoftJTest”,是一款通过Parasoft 制作的自动化的Java 软件测试和静态分析软件。JTest 包含的功能有: 单元测试情况

4、下的生成和执行、静态代码分析、数据流的静态分析、度量分析、回归测试、运行时错误检测。此外,它还具备了同行代码审查流程自动化和运行时错误检测的功能,如:竞态条件、异常、资源和内存泄漏、安全漏洞攻击。3.TestNG (开源)TestNG是一款为Java 编程语言设计的测试框架,灵感来自于JUnit和NUnit 。 TestNG 的主要功能是覆盖范围更广的测试分类,如单元、功能性、端到端,一体化等。它还有一些新的功能,可以使之更强大和更容易使用,如:注可编辑-精选文档 -解、具备大型线程池各种策略的运行测试、多线程的代码测试、灵活的测试配置、参数化数据驱动的测试支持,等等。TestNG 支持各种各

5、样的工具和插件,比如Eclipse 、IDEA 、Maven等等。4.JUnit (开源)JUnit 是一个为 Java 编程语言设计的单元测试框架。JUnit 为测试驱动开发框架的发展发挥了重要作用。 它是现在被统称为xUnit 的单元测试框架大家庭的组成成员之一,源于SUnit 。在编译时, JUnit 可以连接作为JAR,用于编写可重复的测试。5.Mockito(开源)Mockito是一款在 MIT License可用的支持 Java 的开源测试框架。Mockito允许程序员使用自动化的单元测试创建和测试双对象(模拟对象) ,以达到测试驱动开发( TDD )和行为驱动开发( BDD )的

6、目的。6.Powermock(开源)PowerMock是一款支持单元测试源代码的Java 框架。虽然PowerMock可以作为 Mocking框架,例如 Mockito和 EasyMock的扩展而运行,但是它具备了更强大的能力。 PowerMock利用自定义的类加载器和字节码操纵器,来确保静态方法的模拟、静态初始化的删除、函数构造、最终的类和方法以及私有方法。它的主要目的是通过最少的方法和注释来扩展现有的API ,以获得额外的功能。7. Contest(开源)当进行单元测试时需要JVM具有低的确定性,同时是更“模糊的”,这就是要用到ConTest的地方。 1、同步覆盖2 、死锁预防 ( Con

7、Test可以分析是可编辑-精选文档 -否以冲突的顺序嵌套地拥有锁,这表明有死锁的危险 ) 3 、调试帮助 (ConTest可以生成一些对并行调试有用的运行时报告) 4 、UDP 网络混乱 (ConTest支持通过 UDP (数据报)套接字进行网络通信的域中的并行混乱的概念)。8 、Agitator(商用)真正的面对对象的测试方法,保证代码“需求做什么?”,而不是说明“它做了什么”完全的自动化,测试不用写任何代码,强大的代码跟踪功能,寻找BUG 更加快捷,大大送减少手动工作量; 强大,详细的报表,可以让开发人员,QA 人员,管理人员都能清楚的了解自己负责的项目;有更好的结构和设计、扩展性、可重用

8、性,健壮性和可测试性。五、单元测试工具比较:单元测试工具比较多,目前商用主要有JTest和 Agitator,开源用的比较多的有 JUnit 、TestNG 、Arquillian、 Powermock、Mockito、 Contest等。JUnit使用最多,群众基础广泛,操作简单,可满足基本的单元测试。TestNG 、Arquillian基于 JUnit ,引入了一些新的功能,使其功能更强大,使用更方便。Contest :可集成 Eclipse 插件,死锁预防。Powermock:专门用来应付一些奇怪的测试需求,例如mockprivate方法,mock静态方法, mock final方法。六

9、、在 Eclipse 中使用 JUnit4进行单元测试可编辑-精选文档 -第一步:打开 eclipse.exe ,创建一个名为 “Ives ”的工项目,创建一个名为”UnitTest ”的类。写几个方法:两数+ - * /的方法和返回结果的方法。第二步:将 JUnit4 单元测试包引入这个项目:在该项目“Ives ”上点右键,点“属性”( Properties ),如图:在弹出的属性窗口中,首先在左边选择“Java 构建路径” (Java Build Path),然后到右上选择 "库( L) "( Libraries )标签,之后在最右边点击“添加库( A)”( Add L

10、ibraries)按钮,如下图所示:可编辑-精选文档 -可编辑-精选文档 -点击完成, JUnit4 软件包就被包含进我们这个项目了。可编辑-精选文档 -第三步:生成 JUnit 测试框架:在 Eclipse 的包资源管理器( PackageExplorer )中用右键点击该类”UnitTest “弹出菜单,选择新建 JUnit 测试用例 (New àJUnit Test Case )。如下图所示:可编辑-精选文档 -在弹出的对话框中,进行相应的选择,如下图所示:可编辑-精选文档 -点击完成之后会出现如下图:可编辑-精选文档 -千万不要去删除 Test 这个标志很重要的!然后把fai

11、l (“尚未实现”)删除,把自己的代码敲进去就可以了。我选择了测试4 个方法,所以它会自动生成 4 个测试方法。那测试方法怎么写呢?举个例子,我想知道我的UnitTest里面的 plus 方法有没有写对,那我就对这个方法写个测试。把a,b 两个数传递进去,例如a=1 和b=1 ,那 a+b 就等 2,所以这里我们又要了解新的东西了。那就是关于JUnit的 api 了,下面有关于 JUnit 的 api ,到时候我看看要不要贴几个常用的方法出来,加上实例,这样会更加容易理解。继续我们的话题:我们知道 a+b=2 ,所以如果 plus 方法的 result 是 2 的话,那就说明了我们的这个 plus 暂时没有这类型的 bug 。所以我们要用到方法assertEquals (double expected, double actual)这个方法里的double expected是我们期望的值, double actual是实际的值。例如assertEquals (2, a+b) ,这样就可以测试方法有没有算错了。其实电脑一般都不会算错吧?哈哈完整的测试代码如下:可能用心看的童鞋可能会发现我还写了一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论