写点什么

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:008966

评论

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

10分钟搞定分布式应用缓存

俞凡

架构

好用的在线白板网站有哪些?这5款白板软件值得推荐!

彭宏豪95

职场 在线白板 办公软件 在线协作 效率软件

融合商品计划与供应链管理:打造高效协同供应链生态

第七在线

云原生NPM与传统NPM的差异

乘云数字DataBuff

云原生 npm ebpf

7 款便捷好用的AI API

幂简集成

AI API AI+API经济

Go变量作用域精讲及代码实战

不在线第一只蜗牛

Java golang JVM

为什么要做数字化转型?数字化转型对企业的意义?

优秀

数字化转型 企业数字化转型 数字化业务转型

分享 9 个高质量的技术类信息源!

快乐非自愿限量之名

资料分享 分享工具

快速入门 TinyVue 组件库一键换肤!get“多主题适配”技能

OpenTiny社区

开源 前端开发 web开发 OpenTiny TinyVue

企业如何实现异地组网?SDWAN组网搭建教程分享

Ogcloud

SD-WAN 企业组网 SD-WAN组网 异地组网 SDWAN

首家!腾讯云ES通过中国信通院检索增强生成(RAG)技术要求专项测试

腾讯云大数据

ES

低代码开发:企业数字化部门的数字化转型之路

不在线第一只蜗牛

低代码 数字化

探索 Go slog 标准库:设计与应用

俞凡

golang

低代码开发:中小企业数字化转型指南

快乐非自愿限量之名

低代码 数字化

低代码开发:企业供应链数字化的挑战与应对

EquatorCoco

低代码 供应链

线上观看人次2万+!「飞天技术沙龙-CentOS 迁移替换专场」北京站圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 CentOS迁移 Alibaba Cloud Linux Anolis OS

有趣、实用!专为小白设计的Python零基础入门到人工智能教程

我再BUG界嘎嘎乱杀

Python 人工智能 后端 入门 零基础

2024 年 5 月公链研报:监管调整与市场新动向

Footprint Analytics

哪个开源Wiki系统最好用?2024年12款优质推荐

爱吃小舅的鱼

开源Wiki Wiki系统 团队知识管理

观测云告警集成 PagerDuty 最佳实践

观测云

告警

云游戏怎么发行?云游戏发行商推荐

Ogcloud

云游戏 云游戏发行 云游戏平台 游戏云化

一文读懂Partisia Blockchain 的MOCCA方案:资产托管的最优解

大瞿科技

一文读懂Partisia Blockchain 的MOCCA方案:资产托管的最优解

加密眼界

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