JUnit5学习之二:Assumptions类,阿里P8成长路线

}

  1. 点击下图红框位置执行单元测试:

在这里插入图片描述

  1. 执行结果如下:

在这里插入图片描述

  1. 另外,在target目录,可以看到surefire插件生成的单元测试报告TEST-com.bolingcavalry.assertassume.service.impl.AssertAssumpTest.xml,如下图所示,testcase节点中出现了skipped节点:

在这里插入图片描述

  • 上述对比验证再次说明Assertions和Assumptions的区别:都用来对比预期值和实际值,当预期值和实际值不一致时,Assertions的测试结果是执行失败,Assumptions的测试结果是跳过(或者忽略);

Assumptions实战

弄清楚的Assertions和Assumptions的区别,接下来趁热打铁,学习Assumptions类中几个重要的静态方法:assumeTrue、assumingThat

  1. 最简单的用法如下,可见只有assumeTrue不抛出异常,后面的log.info才会执行:

@Test

@DisplayName(“最普通的assume用法”)

void tryAssumeTrue() {

assumeTrue(“CI”.equals(envType));

log.info(“CI环境才会打印的assumeTrue”);

}

  1. assumeTrue可以接受Supplier类型作为第二个入参,如果assumeTrue失败就会将第二个参数的内容作为失败提示:

@Test

@DisplayName(“assume失败时带自定义错误信息”)

void tryAssumeTrueWithMessage() {

// 第二个入参是Supplier实现,返回的内容用作跳过用例时的提示信息

assumeTrue(“CI”.equals(envType),

() -> “环境不匹配而跳过,当前环境:” + envType);

log.info(“CI环境才会打印的tryAssumeTrueWithMessage”);

}

效果如下图:

在这里插入图片描述

3. 还有个assumingThat方法,可以接受Executable类型作为第二个入参,如果第一个入参为true就会执行Executable的execute方法,注意assumingThat方法的特点:不抛出异常,因此其所在的方法不会被跳过,这是和assumeTrue相比最大的区别(assumeTrue一旦入参为false就会抛出异常,其所在方法就被标记为跳过):

@Test

@DisplayName(“assume成功时执行指定逻辑”)

void tryAssumingThat() {

// 第二个入参是Executable实现,

// 当第一个参数为true时,执行第二个参数的execute方法

assumingThat(“CI”.equals(envType),

() -> {

log.info(“这一行内容只有在CI环境才会打印”);

});

log.info(“无论什么环境都会打印的tryAssumingThat”);

}

  • 接下来咱们执行上述代码,看看效果;

执行Assumptions代码

  1. 先做准备工作,本次实战的springboot工程名为assertassume,咱们在工程的resources目录下添加两个配置文件:application.properties和application-test.properties,位置如下图:

在这里插入图片描述

  1. application-test.properties内容如下:

envType:CI

  1. application.properties内容如下:

envType:PRODUCTION

  1. 完整的单元测试类如下,通过注解ActiveProfiles,指定了使用application-test.properties的配置,因此envType的值为CI:

package com.bolingcavalry.assertassume.service.impl;

import lombok.extern.slf4j.Slf4j;

import org.junit.jupiter.api.DisplayName;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.ActiveProfiles;

import static org.junit.jupiter.api.Assumptions.assumeTrue;

import static org.junit.jupiter.api.Assumptions.assumingThat;

@SpringBootTest

@Slf4j

@ActiveProfiles(“test”)

public class AssumptionsTest {

@Value(“${envType}”)

private String envType;

@Test

@DisplayName(“最普通的assume用法”)

void tryAssumeTrue() {

assumeTrue(“CI”.equals(envType));

log.info(“CI环境才会打印的assumeTrue”);

}

@Test

@DisplayName(“assume失败时带自定义错误信息”)

void tryAssumeTrueWithMessage() {

// 第二个入参是Supplier实现,返回的内容用作跳过用例时的提示信息

assumeTrue(“CI”.equals(envType),

() -> “环境不匹配而跳过,当前环境:” + envType);

log.info(“CI环境才会打印的tryAssumeTrueWithMessage”);

}

@Test

@DisplayName(“assume成功时执行指定逻辑”)

void tryAssumingThat() {

// 第二个入参是Executable实现,

// 当第一个参数为true时,执行第二个参数的execute方法

assumingThat(“CI”.equals(envType),

() -> {

log.info(“这一行内容只有在CI环境才会打印”);

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

Java高频面试专题合集解析:

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

更多Java架构进阶资料展示

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

[外链图片转存中…(img-rJid8YaG-1710696941290)]

更多Java架构进阶资料展示

[外链图片转存中…(img-yTD3gQPT-1710696941290)]

[外链图片转存中…(img-CNDwyVSm-1710696941290)]

[外链图片转存中…(img-5HS3zPXl-1710696941291)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值