JUnit 5单元测试(一)—— 基本配置

这篇具有很好参考价值的文章主要介绍了JUnit 5单元测试(一)—— 基本配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

为什么要有单元测试?

举个例子,如果你写了一个比较复杂的方法,这个函数接收两个参数然后计算会输出一个值,经过一系列测试没问题。

可是后来因为功能变化,别人又修改了这个方法,你又需要再把以前测试的数据再测一遍,另外如果测试不全面的话,那这个方法就会有问题。而且如果以果这个方法又改动了,那岂不是又要再全部测试一次?
单元测试就可以把你准备好的所有测试用例,在每次测试或要上线时运行下看符不符合预期的结果,不符合就直接报错,可以做到快速测试并发现问题。

一、JUnit 4与JUnit 5区别

JUnit 5 旨在适应Java 8 编码风格,并比 JUnit 4 更健壮和灵活。

JUnit4 需要Java5 或以上版本,JUnit4把所有的代码都打包到一个jar包。

使用 JUnit5 需要 Java 8 或更高版本,JUnit5由三个子项目构成:JUnit平台(JUnit Platform),JUnit Jupiter和JUnit Vintage。

  • JUnit Platform:它定义了测试引擎(TestEngine)API,用于开发运行在JUnit平台上面的新的测试框架。
  • JUnit Jupiter:它拥有所有的新的JUnit注解和测试引擎的实现(Implementation),这个测试引擎的实现能够测试使用新注解开发的测试代码。
  • JUnit Vintage:用于支持在JUnit5平台上运行JUnit3和JUnit4编写的测试用例

此外主要的区别是断言Assert和其他注解以及使用上的不同,例如:使用JUnit 5 测试类上可以不用写 @RunWith 。

具体其他不同点可以参考 JUnit4和JUnit5的主要区别

二、新建一个maven项目

先按照这篇文章使用idea的maven模板创建一个maven项目:idea快速创建maven项目

三、pom文件配置

1.引入junit5依赖

  <dependencies>
    <!-- junit5用于单元测试-->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.9.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

上面使用的junit-jupiter依赖是Junit 提供的一个 集合器(aggregator):它 集成了其他需要的 Junit 依赖,包括:

  • junit-jupiter-api

  • junit-jupiter-params

  • junit-jupiter-engine

这样你就只需写集合器那一个依赖就可以了。

2.引入 maven-surefire-plugin插件

引入 maven-surefire-plugin 插件以支持 Maven 执行应用程序的单元测试并生成txt或xml格式的报告。
(默认情况下,报告生成在{项目目录}/target/surefire-reports/TEST-*.xml)。

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

3.最终的pom.xml

因为用的idea的maven模板创建的maven项目,其最终生成的pom.xml中 pluginManagement里的插件版本可能有点旧,你可以自己指定插件版本,也可以把用不到的插件删除。

最终你的pom.xml看起来像下面这样:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>mavenTest</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>mavenTest</name>

  <!-- 指定项目编译使用的jdk版本-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <!-- junit5用于单元测试-->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.9.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <!-- clean 清除构建在target文件夹下生成的各个Jar包和class等文件-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>

        <!-- 用于编译项目的源代码 -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.11.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

        <!-- 支持单元测试 -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <!-- 用于将项目打包成一个jar -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>

        <!-- 将项目生成的jar包添加到本地存储库,方便其他项目引用。(其他项目通过groupId、artifactId、version来引用本项目的jar) -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

4.扩展

生命周期、生命周期阶段、插件和插件目标是 Maven 的核心。

  • Maven 命令mvn只接受生命周期阶段或插件目标作为参数。
  • Maven 带有三个生命周期:default、clean 和 site。
  • 每个生命周期由生命周期阶段组成,总共有 28 个阶段——默认 生命周期包含21 个阶段验证、…、编译、…、打包、…、安装、部署),清理的生命周期含有3个阶段预编译)清洁、清洁、清洁后),站点生命周期含有 4 个站点前、站点、站点后、站点部署)。
  • 当使用命令调用生命周期阶段时mvn,所有前面的阶段都会依次执行。
  • 生命周期阶段本身不具备完成任何任务的能力,它们依赖于插件来执行任务。
  • 根据项目和打包类型,Maven 将各种插件目标绑定到生命周期阶段,目标执行委托给它们的任务。

IDEA 主界面右侧 Maven页签的 Lifecycle 和 Plugins 里有同样的命令,比如 install,既在 Plugins 中存在,也在 Lifecycle中存在,它们有什么区别吗?

简单来说Lifecycle 下的是执行整个生命周期,而Plugins 下的是只执行它具体的阶段。

举个例子:

你点击Lifecycle 下的 install :

它会帮你执行如下过程 validate --> compile --> test --> package --> integration-test --> verify --> install ,也就是说它会帮你执行验证、编译、单元测试、打包、整合测试、最后再把生成的jar包发布到本地仓库,换句话说它会帮你执行 install 之前的所有操作,最后执行 install

你点击 Plugins 下的 install :

它只会帮你把生成的jar包发布到本地仓库,也就是说它只会帮你执行 install ,其前面的操作它不会帮你执行。

感兴趣的话可以看下这篇文章:IDEA 中 maven 的 Lifecycle 和Plugins 的区别

四、JUnit 5单元测试(二)—— 断言

限于篇幅,单元测试相关注解和断言看我下一篇文章: JUnit 5单元测试(二)—— 断言文章来源地址https://www.toymoban.com/news/detail-482464.html

到了这里,关于JUnit 5单元测试(一)—— 基本配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python自动化测试 环境搭建 Selenium、WebDriver下载、安装、配置、基本使用详解

    基本于Python语言 和 Selenium框架,使用PyCharm 开发环境,详细介绍自动化测试环境的搭建 以及 基本的使用方法。 Python环境目前已被大部分主流操作系统所支持,比如在Linux、Mac、Unix等系统上就自带了Python环境,但在Windows系统上目前还需要自己安装,(当然如已经安装过了的话

    2024年02月03日
    浏览(72)
  • Day14:单元测试、Junit单元测试框架、反射、注解

    针对最小的功能单元(方法)进行正确性测试 编写正规的单元测试框架 传统的无法执行自动化测试,且无法得到测试报告 Junit的作用: 测试类取名:原类名+Test(大驼峰) 测试方法取名:test+原函数名称(小驼峰) 测试方法:必须public,无参,无返回值 测试方法上面必须加

    2024年04月14日
    浏览(63)
  • 单元测试 —— JUnit 5 参数化测试

    目录 设置 我们的第一个参数化测试 参数来源 @ValueSource @NullSource @EmptySource @MethodSource @CsvSource @CsvFileSource @EnumSource @ArgumentsSource 参数转换 参数聚合 奖励 总结 如果您正在阅读这篇文章,说明您已经熟悉了JUnit。让我为您概括一下JUnit——在软件开发中,我们开发人员编写的代

    2024年02月03日
    浏览(47)
  • 软件测试实验:Junit单元测试

    目录 前言 实验目的 实验内容 实验要求 实验过程 题目一 题目一测试结果 题目二 题目二实验结果 总结 软件测试是软件开发过程中不可缺少的一个环节,它可以保证软件的质量和功能,发现并修复软件的缺陷和错误。软件测试分为多种类型,其中一种是单元测试,即对软件

    2024年02月02日
    浏览(51)
  • 【单元测试】Junit 4(三)--Junit4断言

    ​ **断言(assertion)**是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。 这里我们直接上例子 接下来我们

    2024年02月08日
    浏览(52)
  • 【Junit 单元测试】

    1.导入依赖

    2024年02月11日
    浏览(23)
  • 单元测试及其工具Junit

    单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。 单元测试是软件测试的一种类型,测试对象是最基础的代码单元(函数、类、模块),属

    2024年02月10日
    浏览(42)
  • Junit单元测试(笔记)

    Junit是一个Java语言的单元测试框架,简单理解为可以用于取代java的( 部分 )main方法。Junit属于 第三方 工具,需要 导入jar包 后使用。 a.在当前模块下创建lib文件夹 b.把junit的jar包,拷贝到lib的文件夹中 c.把jar包添加到图书馆中 执行的结果: 备注: Junit常用注解(Junit5.x版本) @Befor

    2023年04月26日
    浏览(39)
  • JUnit单元测试之旅

    单元测试(Unit Testing)是对软件中的最小可测试单元进行检查和验证。它主要包括: 测试单元:软件中的最小可测试功能模块,如方法、类等。 测试用例:用于验证测试单元的输入、执行和输出是否正确的测试脚本。 测试套件:包含多个测试用例的集合。 JUnit是Java语言中最广泛使用

    2024年02月07日
    浏览(86)
  • 单元测试junit+mock

    单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个方法、类、功能模块或者子系统。 单元测试通常和白盒测试联系到一起 ,如果单从概念上来讲两者是有区别的,不过我们通

    2024年02月08日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包