Fixtures 是测试中非常重要的一部分。他们的主要目的是建立一个固定/已知的环境状态以确保 测试可重复并且按照预期的方式运行。比如在app测试中

基类@BeforeClass 配置初始化,初始化driver,安装启动app等,基类@AfterClass 退出前清理环境

public class Junit5Demo_Fixtures {

    @BeforeAll
static void beforeAll() {
System.out.println("Father BeforeAll 执行了!");
} @BeforeEach
void beforEach() {
System.out.println("Father BeforeEach 执行了!");
} @AfterEach
void afterEach() {
System.out.println("Father AfterEach 执行了!");
} @AfterAll
static void afterAll() {
System.out.println("Father AfterAll 执行了!");
} @Test
void testMethod01() {
System.out.println("Father testMethod01 执行了!");
} @Test
void testMethod02() {
System.out.println("Father testMethod0102 执行了!");
}
}

测试执行结果

子类继承父类测试方法执行顺序,相同优先级,父类先进,子类先出

public class Junit5Demo_Fixtures1 extends Junit5Demo_Fixtures {
@BeforeAll
static void childBeforeAll() {
System.out.println("child BeforeAll 执行了!");
} @AfterAll
static void childAfterAll() {
System.out.println("child AfterAll 执行了!");
} @BeforeEach
void childBeforEach() {
System.out.println("child BeforEach 执行了!");
} @AfterEach
void childAfterEach() {
System.out.println("child AfterEach 执行了!");
} @Test
void childTestMethod01() {
System.out.println("child TestMethod01 执行了!");
} @Test
void childTestMethod02() {
System.out.println("child TestMethod02 执行了!");
} }

assertAll()实现1个用例中多个断言,实现断言失败仍然会继续下一个断言

@Test  // 错误后依然继续执行
public void addTest() {
int resultPass = Calculator.add(4,2);
int resultFail = Calculator.add(4,2);
int result = Calculator.add(4,2);
System.out.println("add:" + result);
assertAll(("计算结果:"),
()->assertEquals(6,resultPass),
()->assertEquals(7,resultFail),
()->assertEquals(8,result));
}

@nest嵌套测试模拟支付购买流程

public class LoginAndBuy {
//存放数据的变量datamap
private static HashMap<String,Object> datamap=new HashMap<String,Object>();
@Test
void Login(){
datamap.put("login","success");
System.out.println("用户登录状态为"+datamap.get("login"));
}
@Nested
@DisplayName("第二个执行")
class pay{
@Test
void paytest(){
if (StringUtils.isNotEmpty((CharSequence) datamap.get("buy"))){
System.out.println("正在支付...");
System.out.println(datamap.get("buy"));
}else {
System.out.println("尚未购买???????????");
}
}
}
@Nested //使用nested 进行业务流测试
@DisplayName("第一次执行")
class Buy{
@Test
void buyTest(){
// 判断用户是否登录成功
if (datamap.get("login").equals("success")){
System.out.println("用户登录成功可以购买");
datamap.put("buy","ok");
System.out.println("giao"+datamap.get("buy"));
}else {
System.out.println("用户未登录成功,请先登录");
}
}
}

执行结果:

Junit5快速入门指南-3的更多相关文章

  1. Junit5快速入门指南-4

    Junit5套件测试 @RunWith(JUnitPlatform.class) 执行套件 @SelectPackages({"packageA","packageB&q ...

  2. JUnit5 快速入门指南

    1. 安装 在pom中添加依赖 <properties> <junit.jupiter.version>5.3.2</junit.jupiter.version> ...

  3. JUnit5快速入门指南-2

    重复测试中容易产生的问题 //结果类 private static int result = 0; public static int count(int x) throws InterruptedE ...

  4. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  5. AngularJS快速入门指南19:示例代码

    本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...

  6. AngularJS快速入门指南18:Application

    是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...

  7. AngularJS快速入门指南17:Includes

    使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...

  8. AngularJS快速入门指南16:Bootstrap

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  9. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

随机推荐

  1. 为什么大家都在用WebRTC?

    WebRTC代表网络实时通信.它是一种非常令人兴奋,强大且具有高度破坏性的尖端技术和标准.自从WebRTC诞生以来,80%的浏览器都开始支持它.有数据显示,2017年~2021年期间,WebRTC市场 ...

  2. 01_安装电脑软件的步骤批处理脚本.bat

    REM 01_安装电脑软件的步骤批处理脚本.bat MD 01_安装电脑软件的步骤 REM ZIP解压密码空格MD 02_制作杏雨梨云USB维护系统2019中秋版之国庆更新固态U盘MD 03_复制安装 ...

  3. Unity 不规则按钮实现

    1.先重写Image类,实现对Image图形范围的重写: 2.对不规则按钮添加Polygon Collider2D组件,调整大小圈中要点击的范围: 3.将重写的Image类添加到不规则按钮上时,需要移 ...

  4. 一周内被程序员疯转3.2W次,最终被大厂封杀的《字节跳动Android面试手册》!

    一眨眼又到金三银四了,不知道各位有没有做好跳槽涨薪的准备了呢? 今天的话大家分享一份最新的<字节跳动Android面试手册>,内容包含Android基础+进阶,Java基础+进阶,数据结构 ...

  5. 基于Gitea搭建属于自己的Git服务

    作者:IT王小二 博客:https://itwxe.com 一.搭建环境和前提 搭建环境: 操作系统:CentOS7.6 Docker版本:docker-ce-18.09.9 Lsky Pro版本:1 ...

  6. 源码解析.Net中IConfiguration配置的实现

    前言 关于IConfituration的使用,我觉得大部分人都已经比较熟悉了,如果不熟悉的可以看这里.因为本篇不准备讲IConfiguration都是怎么使用的,但是在源码部分的解读,网上资源相对少一 ...

  7. 《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)

    1.简介 按计划今天宏哥继续讲解css的定位元素的方法.但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用. 2.常用定位方法(8种) (1)id(2)name(3)class name( ...

  8. 漏洞复现|Dubbo反序列化漏洞CVE-2019-17564

    01漏洞描述 - Apache Dubbo支持多种协议,官方推荐使用Dubbo协议.Apache Dubbo HTTP协议中的一个反序列化漏洞(CVE-2019-17564),该漏洞的主要原因在于当A ...

  9. pikachu Unsafe Filedownload 不安全的文件下载

    不安全的文件下载概述文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件 ...

  10. DVWA(四):Command Injection 全等级命令注入

    Command Injection : 命令注入(Command Injection),对一些函数的参数没有做好过滤而导致用户可以控制输入的参数,使其恶意执行系统命令或这cmd.bash指令的一种注入 ...