单元测试工具调研报告

单元测试工具调研报告

一、单元测试目的

单元测试(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”的类。写几个方法:两数+ - * /的方法和返回结果的方法。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4