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. Azure Terraform(十四)Azure Key Vault 的机密管理

    一,引言 最近有网友私信我,将 Terraform 部署到 Azure 是一种将基础结构作为代码进行管理的好方法,但是如何使用 Azure Key Vault 来存储我们的 Secret ?在这篇博文 ...

  2. Prompt Playground 7月开发记录

    Prompt Playground 2023年7月开发记录 上个月的时候,出于日常工作需求,做了一个简单的提示词调试工具 Prompt Playground. 这个工具的初衷是为了方便测试,所以没有做 ...

  3. MySql之锁

    MySql之锁 一.全局锁 对整个数据库加锁 应用:数据库所有表备份 二.表级锁 1.表锁 分为两类: 表共享读锁read lock 表独占写锁write lock 2.元数据锁 避免DML语句和DD ...

  4. Apache solr XML 实体注入漏洞(CVE-2017-12629)

    描述: Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.原理大致是文档通过Http利用XML加到一个搜索集 ...

  5. 用户空间协议栈设计和netmap综合指南

    本文分享自华为云社区<用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度>,作者:Lion Long . 协议概念 1.1.七层网络模型和五层网络模型 应用层: 最接近用户的 ...

  6. Docker 安装Redis 无法使用配置文件设置密码问题

    背景 最近开发需要使用各种组件,如果都到开发机上安装,会占用电脑资源较多.所以使用docker容器来安装这些组件.例如 redis .mongodb.mysql.rabitmq.elasticsear ...

  7. Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用

    Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用 1. 什么是Dropdown组件? Dropdown(下拉菜单)是Unity UGUI中的一个常用组件,用于在用户点击或选择时显示一 ...

  8. ATtiny88初体验(六):SPI

    ATtiny88初体验(六):SPI SPI介绍 ATtiny88自带SPI模块,可以实现数据的全双工三线同步传输.它支持主从两种模式,可以配置为LSB或者MSB优先传输,有7种可编程速率,支持从空闲 ...

  9. 使用“文心一言”编写技术博文《搭建企业知识库:基于 Wiki.js 的实践指南》

    百度于8月31日零点宣布,文心一言率先向全社会全面开放.我也是立即体验了下,感觉还不错.下面分享一下,如何使用"文心一言"写一篇技术博客. Step 01 生成文案主体 可以对文心 ...

  10. openNebula集群搭建

    openNebula集群搭建 目录 openNebula集群搭建 OpenNebula概述 环境介绍及部署前准备 1. 安装步骤 1.关闭防火墙 2.配置epel源地和opennebula源 3.安装 ...