那年追过的开发者测试工具

cnblogs 2024-08-10 15:09:00 阅读 84

交付进度紧张,为什么还要花费精力写单元测试代码,如下是之前的笔记。

    <li>写单元测试代码有什么好处
  • 为什么程序员讨厌写单元测试代码

工欲善其事,必先利其器。使用Java语言交付项目时,需要掌握单元测试框架和Mock工具的使用。

如下是当年交付项目过程中,使用过的测试框架和工具,可供参考。

JUnit

测试用例的开发框架,从JUnit3一直到JUnit4。

JUnit5发布后,岗位的变化,在项目里写代码的机会不多,因此没有太多使用经验。

  • 官网
  • 社区主页

    A programmer-oriented testing framework for Java.

  • junit5代码仓库

    The 5th major version of the programmer-friendly testing framework for Java and the JVM.

  • JUnit5使用指导
  • junit4代码仓库
  • Getting Started for JUnit4
  • JUnit4 wiki

使用JUnit5时,修改项目的<code>pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter-api</artifactId>

<version>5.10.3</version>

<scope>test</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter-engine</artifactId>

<version>5.10.3</version>

<scope>test</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter</artifactId>

<version>5.10.3</version>

<scope>test</scope>

</dependency>

使用JUnit4时,修改项目的pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/junit/junit -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.13.2</version>

<scope>test</scope>

</dependency>

参考资料

    <li>【软件测试】单元测试工具---Junit详解
  • JUnit4 / JUnit 5 全面详解【单元测试、Maven】
  • 【软件测试】JUnit详解
  • Java Junit单元测试(入门必看篇)
  • 【软件测试】JUnit 单元测试 基础学习教程
  • 自动化测试Junit
  • Junit 单元测试(详解)

EasyMock

当年作为骨干参与祖传项目的交付,使用EasyMock配合PowerMock,写了很多单元测试,对于稳固产品质量,改善生活质量,非常有帮助。

  • 官网

  • 代码仓库

    EasyMock, makes mocking easier since 2001.

    EasyMock is a Java library that provides an easy way to use Mock Objects in unit testing.

  • Getting Started

  • 使用指导

修改项目的pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/org.easymock/easymock -->

<dependency>

<groupId>org.easymock</groupId>

<artifactId>easymock</artifactId>

<version>5.4.0</version>

<scope>test</scope>

</dependency>

参考资料

  • 高效单元测试——EasyMock技术与应用
  • EasyMock详解
  • EasyMock教程
  • 开源 API 工具的 MOCK 功能真的好用么?

PowerMock

对于老项目来说,静态类满天飞,PowerMock非常有用。

当年作为骨干参与祖传项目的交付,使用EasyMock配合PowerMock,写了很多单元测试,对于稳固产品质量,改善生活质量,非常有帮助。

检查提交记录,发现最近的提交已在2022年2月24日。

除非有新的开发者加入,否则本项目短期内不会有新的进展。

  • 官网

  • 代码仓库

    PowerMock is a Java framework that allows you to unit test code normally regarded as untestable.

  • Is this project still alive?

    I don't personally have time to maintain PowerMock anymore, and from what I understand from @thekingn0thing, the same is true for him. Is anyone else willing to move it forward? I'd be happy to give access etc if anyone is willing to do so.

    依据帖子中作者@johanhaleby的上述答复,短期内可能不会重启项目的开发工作。

修改项目的pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->

<dependency>

<groupId>org.powermock</groupId>

<artifactId>powermock-module-junit4</artifactId>

<version>2.0.9</version>

<scope>test</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/org.powermock/powermock-core -->

<dependency>

<groupId>org.powermock</groupId>

<artifactId>powermock-core</artifactId>

<version>2.0.9</version>

<scope>test</scope>

</dependency>

官方文档

  • Getting Started
  • Downloads
  • Motivation
  • Javadoc
    • EasyMock API extension (PowerMock class)
    • Mockito API extension (PowerMockito class)
    • Mockito2 API extension (PowerMockito class)
    • PowerMock Reflect (Whitebox class)
  • Common
    • PowerMock Configuration
    • Bypass Encapsulation
    • Suppress Unwanted Behavior
    • Test Listeners
    • Mock Policies
    • Mock system classes
  • EasyMock
  • Mockito
  • TestNG
  • Delegate to another JUnit Runner
  • Bootstrap using a JUnit Rule
  • Bootstrap using a Java Agent
  • OSGi
  • Release Notes
  • FAQ

参考资料

  • PowerMock注解PowerMockIgnore的使用方法
  • PowerMock简介及常见注解解释
  • PowerMock入门:Java单元测试的终极武器
  • 单元测试——PowerMock总结
  • PowerMock(一):PowerMock的基本使用

JMockit

刚入行的时候,隔壁项目组大规模应用本工具交付单元测试和集成测试代码,当时作为新手,除了哇塞,也不知道说啥好。

  • 官方文档

修改项目的pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/org.jmockit/jmockit -->

<dependency>

<groupId>org.jmockit</groupId>

<artifactId>jmockit</artifactId>

<version>1.49</version>

<scope>test</scope>

</dependency>

参考资料

  • 不会测试的程序员不是好程序员(一文让你掌握JMockit的使用)
  • JAVA单元测试——JMockit教程
  • Jmockit总结
  • JMockit学习笔记

Mockito

曾经在一个项目中使用过,不过这个项目的生命周期比较短,所以积累不多。

  • 官网

  • 代码仓库

    Most popular Mocking framework for unit tests written in Java.

  • org.mockito.Mockito

修改项目的pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->

<dependency>

<groupId>org.mockito</groupId>

<artifactId>mockito-core</artifactId>

<version>5.12.0</version>

<scope>test</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter -->

<dependency>

<groupId>org.mockito</groupId>

<artifactId>mockito-junit-jupiter</artifactId>

<version>5.12.0</version>

<scope>test</scope>

</dependency>

参考资料

  • 超详细 springboot 整合 Mock 进行单元测试!本文带你搞清楚!
  • Mockito使用详解
  • Mockito 简介
  • Mockito和PowerMock用法
  • 一文教会你mock(Mockito和PowerMock双剑合璧)
  • Mockito & PowerMock详解
  • Mockito和PowerMock用法
  • Mockito和PowerMockito的使用
  • Mockito与PowerMock的使用基础教程

Cucumber

场景化测试、数据驱动测试,之前参与网络控制器的业务时,广泛使用了本工具来开发单元测试和集成测试代码,非常方便。

  • 官网

  • 社区主页

    Cucumber is a tool for running automated acceptance tests, written in plain language.

  • 代码仓库

    Cucumber for the JVM.

  • 官方文档

修改项目的pom.xml,增加如下配置:

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->

<dependency>

<groupId>io.cucumber</groupId>

<artifactId>cucumber-java</artifactId>

<version>7.18.1</version>

</dependency>

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->

<dependency>

<groupId>io.cucumber</groupId>

<artifactId>cucumber-junit</artifactId>

<version>7.18.1</version>

<scope>test</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->

<dependency>

<groupId>io.cucumber</groupId>

<artifactId>cucumber-core</artifactId>

<version>7.18.1</version>

</dependency>

参考资料

  • Cucumber结合junit5测试
  • 记Cucumber行为驱动测试的简单配置与使用方式
  • Cucumber - junit 支持多线程
  • 【Cucumber系列】Junit Test Runner和CucumberOptions


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。