写点什么

JUnit 5.9 引入对 GraalVM 原生镜像的支持

  • 2022-10-03
    北京
  • 本文字数:1722 字

    阅读完需:约 6 分钟

JUnit 5.9引入对GraalVM原生镜像的支持

JUnit 5.9 解决了各种缺陷并引入了一些新的特性,比如执行测试后保留临时文件的能力。新的注解提供了在 GraalVM 原生镜像中启动或禁用特定测试的能力。现在,XML 报告会存储为开放测试报告(Open Testing Reporting)格式。


JUnit 5.4引入了@TempDir注解,允许在单元测试中自动创建和删除文件。在下面的例子中展示了如何创建 JavaVersions.txt 文件,它将会在测试结束后自动删除:

@Testpublic void tmpDir(@TempDir Path tempDir) throws IOException {    Path file = tempDir.resolve("JavaVersions.txt");    List<String> versions = Arrays.asList("17", "18", "19");    Files.write(file, versions);    assertEquals(versions, Files.readAllLines(file));}
复制代码

JUnit 现在允许通过CleanupMode枚举常量为@TempDir注解设置清理策略,包括:ALWAYSDEFAULTNEVERON_SUCCES。其中,CleanupMode.ALWAYS是默认的清理策略,在声明注解的时候,可以将其变更为CleanupMode.NEVER

@TempDir(cleanup = CleanupMode.NEVER)
复制代码

在运行测试之后,临时文件会依然存在于一个含有随机数字的目录中,比如:

/tmp/junit8656612856066491205/JavaVersions.txt
复制代码

在该版本之后,XML 报告将会以开放测试报告(Open Testing Reporting)的格式进行存储,该格式与任何具体的测试框架或编程语言无关。新的测试结果格式能够让工具开发人员更易于解析测试报告,不必针对每种测试框架特有的测试结果格式编写解析器。


新引入的IterationSelector类允许用户在 IDE 中为参数化的测试选择特定的迭代。在目前流行的 IDE 中,如 IntelliJ,会显示一个绿色的箭头,允许使用所有的参数重新运行整个测试:



现在,有一个open状态的问题已经提交到了 YouTrack(JetBrains 的问题跟踪器)中,提议添加对IterationSelector类的支持。它的建议方式是为参数化测试的每个值添加一个箭头,这样的话,就能基于某个参数值运行测试,而不必针对所有的参数运行测试。


ConsoleLauncher是一个用于运行 JUnit 平台的命令行 Java 应用。我们现在可以使用--single-color参数改变输出风格,它只会显示没有颜色的文本属性,我们还可以使用--color-palette=FILE选择自定义的 ANSI 风格的输出。新引入的--list-engines参数会显示出所有可用的测试引擎。


当没有找到测试时,@Suite的新failIfNoTests属性会使整个测试套件(suite)失败。


在测试实例创建之前应调用的Extensions现在可以使用TestInstancePreConstructCallback接口定义,它对应于现有的TestInstancePreDestroyCallback接口。


现在,我们能够使用@EnabledOnOs@DisabledOnOs注解基于操作系统启用或禁用测试,目前包含了对 FreeBSD 和 OpenBSD 的支持

@Test@EnabledOnOs({OS.FREEBSD, OS.OPENBSD})
复制代码

@MethodSource注解使用的工厂方法现在可以使用ParameterResolver扩展解析得到的参数:

@RegisterExtensionstatic final AnswerResolver answerResolver = new AnswerResolver();@ParameterizedTest@MethodSource("factoryMethod")void testAnswers(String answer) {    assertTrue(answer.startsWith("42"));}static Stream<Arguments> factoryMethod(Integer answer) {    return Stream.of(        arguments(answer + " is the answer to life, the universe, and everything"),        arguments(answer + " is also the answer to this questions")    );}static class AnswerResolver implements ParameterResolver {    @Override    public boolean supportsParameter(ParameterContext parameterContext,             ExtensionContext extensionContext) {        return parameterContext.getParameter().getType() == Integer.class;    }    @Override    public Object resolveParameter(ParameterContext parameterContext,             ExtensionContext extensionContext) {        return 42;    }}
复制代码

JUnit 5.9.1 引入了@EnabledInNativeImage@DisabledInNativeImage注解,以便在GraalVM原生镜像中运行时启用或禁用标注的测试。


JUnit 5 文档提供了关于新功能、缺陷修复和废弃功能的完整概述


原文链接:

JUnit 5.9 Supports GraalVM Native Image


相关阅读:

GraalVM 22.2 添加库配置仓库功能

Java 革新之路:GraalVM 原生镜像

2022-10-03 08:008981

评论

发布
暂无评论
发现更多内容

单链表与双链表的应用与常见算法

测吧(北京)科技有限公司

测试

一次彻底掌握数据中心级的JVM调优实战经验

快乐非自愿限量之名

Java spring JVM

大厂案例:Shopee 百亿级商品数据如何平稳实现千万级服务器成本缩减

HAibiiin

数据库 缓存 架构设计 案例分享 降本增效

现在学Spring Cloud Alibaba 还是Spring Cloud?

了不起的程序猿

Java 微服务 架构师 SpringCloud springcloudAlibaba

Java后端面试最全攻略(2024最新版)

架构师之道

编程 程序员 java面试

和鲸分享| 世界500强莫德纳公司首席数据科学家Eric J. Ma:协同数据科学的制胜秘诀!

ModelWhale

Python 人工智能 大数据 R语言 大模型

为智算“强心”,为园区“壮体”:新质互联网驶入标准化快车道

脑极体

AI

Spring Security如此复杂,Java程序员该如何学习?

了不起的程序猿

Java spring 程序员 架构师 springsecurity

阴阳怪气的「道歉」背后,是新闻从业者的一次呐喊

TechubNews

http请求超时, 底层发生了什么?

不在线第一只蜗牛

网络协议 网络 HTTP

确保对象的唯一性实现

测吧(北京)科技有限公司

测试

SD-WAN的核心服务能力

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SD-WAN国际专线

告别编码难题,JeeLowCode让应用开发更简单!#高效开发

JeeLowCode低代码平台

低成本亿级流量分布式本地缓存一致性方案(设计篇)

HAibiiin

缓存 分布式系统 架构设计 一致性算法 主从架构

开发体育直播软件平台,轻松获取全球赛事资源

软件开发-梦幻运营部

主从架构(Coordinator-Worker Architecture):分布式系统设计中最简单的架构模式

HAibiiin

面试 系统设计 分布式系统 架构设计 主从架构

数智化赋能龙港中医院,让医疗服务有了“人情味”

Alter

第77期 | GPTSecurity周报

云起无垠

CDC YAML 在阿里云的最佳实践

Apache Flink

大数据 flink 实时计算 yaml

OWASP Top 10 安全漏洞与安全防护体系

测吧(北京)科技有限公司

测试

鸿蒙NEXT开发中如何确保使用 PersistentStorage 存储的数据安全?

威哥爱编程

HarmonyOS HarmonyOS NEXT

通义开源语音处理框架 ClearerVoice-Studio;亚马逊 Nova 计划明年发布端到端语音模型丨 RTE 开发者日报

声网

淘宝天猫API接口探索:轻松实现商品详情与关键字搜索

代码忍者

API 接口 pinduoduo API

MPC2024开幕演讲

明道云

企业数智化转型:低代码开发的五大优势解析

不在线第一只蜗牛

低代码 数智化

直播电商,正在被内容逻辑重塑

趣解商业

直播 电商 抖音

需求不明确、没有列基准计划的项目,如何管理项目过程及进度

爱吃小舅的鱼

项目过程

美团一面,有点难度

王中阳Go

Go 后端 面试问题

非技术人员怎样去协调开发项目进度

爱吃小舅的鱼

项目进度

LIFO 后进先出、函数调用的堆与栈的区别

测吧(北京)科技有限公司

测试

2024年好用的AI工具盘点!办公效率快到飞起!

职场工具箱

人工智能 职场 办公软件 AIGC AI生成PPT

JUnit 5.9引入对GraalVM原生镜像的支持_语言 & 开发_Johan Janssen_InfoQ精选文章