单元测试工具调研报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单元测试工具调研报告

一、单元测试目的

单元测试(unit testing),是在软件开发过程中要进行的最低级别的测试活动。单元测试测试用于验证软件最小的可执行单元的正确性,即类或方法的正确性,其目的在于发现各模块内部可能存在的各种差错,验证代码是与设计相符合的,发现设计和需求中存在的错误,发现在编码过程中引入的错误。主要是基于白盒测试。

二、单元测试的好处

1、编写单元测试的时间节约了未来的修改、维护低质量代码的时间。

2、单元测试也是设计的一部分,会促使程序员以使用者的角度重新审视自己的代码,使写出的代码易于使用。

3、当程序被修改时,通过快速的单元测试能够找到修改后存在的漏洞。

三、如何进行单元测试

1、写一点,测一点

1.每写完一个程序单元就开始编写单元测试代码

2.将程序划分为尽可能小的单元,这样更有利于单元测试的编写。

2、单元测试的内容

1.通用的业务组件,或工具类

2.内外部接口

3.包含重要逻辑的Service

4.程序员自己觉得没有把握的代码

3、单元测试的策略

5.尽早进行单元测试

6.对于新增加的功能和修改的功能要进行完善单元测试

7.对于新发现的bug,通常也应增加相应的单元测试

四、常用单元测试工具

1.Arquillian(开源)

Arquillian是JVM一个高度创新性和可扩展的测试平台,支持Java开发人员轻松创建自动化集合的,功能性的和验收的测试。Arquillian允许在运行时间执行测试。Arquillian可以用来管理单个或多个容器的生命周期,捆扎测试用例,从属类和资源。它还能够部署归档到容器中,在容器中执行测试、捕获结果,并创建报告。Arquillian集成了常见的测试框架,如JUnit 4、TestNG 5,并允许使用现有的IDE发布测试,并且由于其模块化的设计使得能够运行Ant和Maven 测试插件。

2.JTest(商用)

JTest也被称为“Parasoft JTest”,是一款通过Parasoft制作的自动化的Java软件测试和静态分析软件。JTest包含的功能有:单元测试情况下的生成和执行、静态代码分析、数据流的静态分析、度量分析、回归测试、运行时错误检测。此外,它还具备了同行代码审查流程自动化和运行时错误检测的功能,如:竞态条件、异常、资源和内存泄漏、安全漏洞攻击。

3.TestNG(开源)

TestNG是一款为Java编程语言设计的测试框架,灵感来自于JUnit和NUnit。TestNG的主要功能是覆盖范围更广的测试分类,如单元、功能性、端到端,一体化等。它还有一些新的功能,可以使之更强大和更容易使用,如:注解、具备大型线程池各种策略的运行测试、多线程的代码测试、灵活的测试配置、参数化数据驱动的测试支持,等等。

TestNG支持各种各样的工具和插件,比如Eclipse、IDEA、Maven等等。

4.JUnit(开源)

JUnit是一个为Java编程语言设计的单元测试框架。JUnit为测试驱动开发框架的发展发挥了重要作用。它是现在被统称为xUnit的单元测试框架大家庭的组成成员之一,源于SUnit。

在编译时,JUnit可以连接作为JAR,用于编写可重复的测试。

5.Mockito(开源)

Mockito是一款在MIT License可用的支持Java的开源测试框架。Mockito 允许程序员使用自动化的单元测试创建和测试双对象(模拟对象),以达到测试驱动开发(TDD)和行为驱动开发(BDD)的目的。

6.Powermock(开源)

PowerMock是一款支持单元测试源代码的Java框架。虽然PowerMock可以作为Mocking框架,例如Mockito和EasyMock的扩展而运行,但是它具备了更强大的能力。PowerMock利用自定义的类加载器和字节码操纵器,来确保静态方法的模拟、静态初始化的删除、函数构造、最终的类和方法以及私有方法。它的主要目的是通过最少的方法和注释来扩展现有的API,以获得额外的功能。7. Contest(开源)

当进行单元测试时需要JVM 具有低的确定性,同时是更“模糊的”,这就是要用到ConTest 的地方。1、同步覆盖2、死锁预防( ConTest 可以分析是否以冲突的顺序嵌套地拥有锁,这表明有死锁的危险) 3、调试帮助(ConTest 可以生成一些对并行调试有用的运行时报告) 4、UDP 网络混乱(ConTest 支持通过UDP(数据报)套接字进行网络通信的域中的并行混乱的概念)。

8、Agitator(商用)

真正的面对对象的测试方法,保证代码“需求做什么?”,而不是说明“它做了什么”完全的自动化,测试不用写任何代码,强大的代码跟踪功能,寻找BUG更加快捷,大大送减少手动工作量;强大,详细的报表,可以让开发人员,QA人员,管理人员都能清楚的了解自己负责的项目;有更好的结构和设计、扩展性、可重用性,健壮性和可测试性。

五、单元测试工具比较:

单元测试工具比较多,目前商用主要有JTest 和 Agitator,开源用的比较多的有JUnit、TestNG、Arquillian、Powermock、Mockito、Contest等。

JUnit使用最多,群众基础广泛,操作简单,可满足基本的单元测试。TestNG、Arquillian基于JUnit,引入了一些新的功能,使其功能更强大,使用更方便。

Contest:可集成Eclipse插件,死锁预防。

Powermock:专门用来应付一些奇怪的测试需求,例如mock private方法,mock 静态方法,mock final方法。

六、在Eclipse中使用JUnit4进行单元测试

第一步:打开eclipse.exe,创建一个名为“Ives”的工项目,创建一个名为”UnitTest”的类。写几个方法:两数+ - * /的方法和返回结果的方法。

相关文档
最新文档