Hi i,m JinXiang


前言

本篇文章主要介绍单元测试工具Junit使用以及部分理论知识

欢迎点赞  收藏 留言评论 私信必回哟

博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言

什么是Junit单元测试?

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。所谓 xUnit,就是一套基于测试驱动开发的测试框架,它的机制:将程序 预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性。

单元测试是一个对单一实体(类或方法)的测试

为什么要使用Junit单元测试?

在刚刚接触到Junit的时候有一个这样的问题,进行测试的话可以使用main函数,那为什么要使用junit?

总结:有以下几点

  • Junit单元测试可单个多个运行,多个共享数据
  • 有很多注解,可以在之前...之后运行
  • 比main代码少一点
  • 断言测试预期结果

最重要的是规范以及方便,main写完测试完后 都是注释或者直接删掉,而Junit不需要

Junit单元测试的使用:

1、注解:

Junit提供了非常强大的注解功能,通过@Test注解修饰到方法上,该方法就变成了一个测试方法,执行当前类时,会自动的执行该类下所有带@Test注解的用例

在使用这些Junit提供的注解时,需要在pom.xml文件中进行配置:

@Test注解示例:

除了@Test注解外,还有以下常用注解:

  • @AfterEach:当前的方法需要在每个用例执行之后都执行一次
  • @BeforeEach:当前的方法需要在每个用例执行之前都执行一次
  • @AfterAll:当前的方法需要在当前类下所有用例执行之后执行一次,且被该注解修饰的方法必须为静态方法
  • @BeforeAll:当前的方法需要在当前类下所有用例执行之前执行一次,且被该注解修饰的方法必须为静态方法

2、用例的执行顺序

如下图所示,测试用例的执行并不会按照我们编写代码的顺序来执行:

如果在实际测试中,我们需要完成连贯的多个步骤的测试,是需要规定测试用例执行的顺序的,可以通过@order注解来实现排序:

  • 先使用注解说明当前类下所有的用例需要使用@Order注解来进行排序(注意:该注解必须要用在类上)
  • 然后通过@Order来指定用例的具体顺序

调用注解,实现排序效果

调试结果展示:

简单来说:Java中的Order注解是用来控制多个Bean的加载顺序的。

3、测试套件

什么是测试套件?

当我们一个类中有多个测试用例时,我们不可能挨个去运行,那样将会很耗费时间,这时我们就需要测试套件来指定类或者指定包名来运行类下或者包下的所有测试用例。

如果要使用测试套件,首先我们需要先创建一个类,通过@Suite注解标识该类为测试套件类(而不是测试类)

在开始操作前,我们需要对Junit5进行配置suite:

原因:单元测试中有部分是不希望自动执行的,仅有部分单元测试希望在内网http://10.0.0.65/ 服务器上自动运行,因此希望配置suite 以解决部分执行问题。

(junit5 低版本中没有suite,目前我们springboot默认带的junit5 需要升级)

为什么要使用suite?(使用suite的好处)

  • 单元测试可分组管理
  • 进行测试间的编排顺序

suite的使用方法:(在pom中配置suite)

学会配置suite之后,Java中的大部分注解都可以用以下方法进行配置!

1. 在web 应用中引入junit5

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
          <version>5.8.2</version>
        <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

2. 引入suite的包

<dependency>
  <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-suite-api</artifactId>
      <scope>test</scope>
        </dependency>
        <dependency>
      <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-suite-engine</artifactId>
</dependency>

3. 代码使用suite

package com.wdtrip.wdpromotion;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite; @Suite
@SelectClasses({TestCustomPage.class,
TestEbkActivity.class
})
public class TestSuiteOne {
}

4. 在pom文件的build中配置需要执行的suite

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <includes>
      <include>com.wdtrip.wdpromotion.TestSuiteOne</include>
    </includes>
  </configuration>
</plugin>

总结不易,希望uu们不要吝啬亲爱的哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正

Java Junit单元测试(入门必看篇)的更多相关文章

  1. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  2. (转载)Android之有效防止按钮多次重复点击的方法(必看篇)

    为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~ 那么如何有效避免这种情况的发生呢? 我的想法是,判断用户点击按钮间隔时间,如果间隔时间太 ...

  3. 基于StringUtils工具类的常用方法介绍(必看篇)

    前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅. isEmpty(String str) 是否为空,空格字符为false is ...

  4. Liunx新手入门必看

    安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...

  5. 利用JS提交表单的几种方法和验证(必看篇)

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <scr ...

  6. db2入门必看命令清单--日常运维必需

    关注 推荐 嘉兴 视频 财经 科技 热点 国际 更多   搜索 34 消息 发布     5   2   收藏 分享 db2入门必看命令清单--日常运维必需 https://www.toutiao.c ...

  7. 拿万元月薪必备的书单,学JAVA的程序员必看的5本书!

    点击蓝色"程序员黄小斜"关注我哟 加个"星标",每天带你读好书! 文/黄小斜 转载请注明出处 每一年的年初都是买书学习热情高涨的时候,虽然不知道你们是让这些书吃 ...

  8. Java - Junit单元测试框架

    简介 Junit : http://junit.org/ JUnit是一个开放源代码的Java语言单元测试框架,用于编写和运行可重复的测试. 多数Java的开发环境都已经集成了JUnit作为单元测试的 ...

  9. Python字符串及基本操作(入门必看)

    基础入门的知识一直没有更新完,今天小张接着给大家带来入门级的字符串的常用操作.本文适合刚入门的小白,大佬们请绕过. 一.定义 字符串的意思就是“一串字符”,比如“Hello,Charlie”是一个字符 ...

  10. Java并发编程入门,看这一篇就够了

    Java并发编程一直是Java程序员必须懂但又是很难懂的技术内容.这里不仅仅是指使用简单的多线程编程,或者使用juc的某个类.当然这些都是并发编程的基本知识,除了使用这些工具以外,Java并发编程中涉 ...

随机推荐

  1. npm 切换源

    切换到淘宝源 npm config set registry https://registry.npm.taobao.org 切换回官方源 npm config set registry http:/ ...

  2. bzip2: (stdin) is not a bzip2 file.

    用tar -zxvf dir.tar.gz命令解压即可.

  3. 《Pro Git》起步笔记

    @ 目录 什么是版本控制 本地版本控制系统 集中化的版本控制 分布式的版本控制系统 Git简史 Git是什么 安装Git 在Linux上安装 在Windows上安装 初次运行Git前的配置 用户信息 ...

  4. 以程序员为视角,关于商品详情API接口的说明

    ​ 商品详情API接口是现代电商平台中非常重要的一部分,它提供了获取淘宝商品详细信息的能力.作为一个程序员,了解如何调用这个API接口是非常关键的. 首先,我们需要明确的是,API接口是应用程序与服务 ...

  5. MySQL允许远程登录的授权方法

    泛授权方式 数据库本地直接登录上数据库: mysql -h localhost -u root 然后执行以下命令,授权完后直接就可以远程连接上.mysql>GRANT ALL PRIVILEGE ...

  6. Maven关联本地已有仓库的方法

    1. 将本地仓库目录localwarehouse进行压缩为localwarehouse.rar. 2. 将localwarehouse.rar解压到D:\maven文件夹中,然后在setting.xm ...

  7. .NET C#基础(9):资源释放 - 需要介入的资源管理

    1. 什么是IDisposable?   IDisposable接口是一个用于约定可进行释放资源操作的接口,一个类实现该接口则意味着可以使用接口约定的方法Dispose来释放资源.其定义如下: pub ...

  8. .NET Core 实现Excel的导入导出

    目录 前言 NPOI简介 一.安装相对应的程序包 1.1.在 "管理NuGet程序包" 中的浏览搜索:"NPOI" 二.新建Excel帮助类 三.调用 3.1. ...

  9. 5.2 磁盘CRC32完整性检测

    CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法,校验算法可以通过计算应用与数据的循环冗余校验(CRC)检验值来检测任何数据损坏.通过运用本校验技术我们可以实现对特定内存区域以及磁 ...

  10. 小札 Maximum Weight Closure of a Graph

    1. Introduction    Define a closure of a directed graph \(G=(V,E)\) as an induced set of vertexes of ...