写点什么

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

评论

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

大数据-124 - Flink State:Keyed State、Operator State KeyGroups 工作原理 案例解析

武子康

Java 大数据 flink spark 分布式

黑龙江等保测评:护航企业数字化与合规运营

等保测评

工业管理 项目管理经验总结(21)

万里无云万里天

项目管理 工业 工厂运维

工业管理 项目管理经验总结(22)

万里无云万里天

项目管理 工业 工厂运维

电通创意发布《2025首席营销官报告》:算法与人性的重构力量

财见

AI智能体开发!和Kiro、Kimi、PPIO、TEN、memU、MiniMax一起Vibe丨Convo AI&RTE2025

RTE开发者社区

【IEEE出版,格林威治大学主办】第六届信息科学与并行、分布式处理国际学术会议(ISPDS 2025)

搞科研的小刘

分布式处理 国际学术会议 信息科学

【ACM出版|稳定EI检索|设优秀论文评选】2025年计算机技术、数字媒体与传播国际学术会议(ICCDC 2025)

搞科研的小刘

数字媒体 计算机技术 传播 信息传播模式

首站深圳!构建AI时代数据护城河 YashanDB引领数智升级加速度

极客天地

Rokid Glasses 移动端控制应用开发初体验-助力业务创新

轻口味

android 智能硬件 Rokid

柔性LED屏幕租赁的创意应用

Dylan

广告 LED LED display LED显示屏 LED屏幕

鸿蒙应用开发从入门到实战(二十一):ArkUI自定义弹窗组件

程序员潘Sir

鸿蒙

企业如何选择局域网聊天工具?

BeeWorks

即时通讯 IM 私有化部署

哈尔滨二级等保测评:企业安全合规的关键支撑与实践方向

等保测评

数字化转型下半场,企业最该补足的三大数据能力

助睿数智

数据分析 数据治理 数据集成 BI 分析工具 智能分析

GPMI一根线终结电视内卷,长虹和海尔没有说破的秘密

脑极体

AI

AI 语音调研初创 Cookiy AI 融资 700 万美元;软银 53 亿美元收购 ABB 机器人业务,布局物理 AI 丨日报

RTE开发者社区

为什么说BeeWorks是适合企业选择的内部通讯系统?

BeeWorks

即时通讯 IM 私有化部署

智算驱动·万象更新 | 超智算AI项目路演大赛在京落幕,以赛为媒共筑产业创新生态

新消费日报

@Update注解批量更新始终报错

刘大猫

人工智能 云计算 大数据 算法 物联网

C#/.NET/.NET Core技术前沿周刊 | 第 57 期(2025年10.1-10.12)

追逐时光者

C# .net 微软

Easysearch 冷热架构实战

极限实验室

easysearch

夜莺监控设计思考(一)整体定位、架构设计、单进程多进程选择、高可用设计

巴辉特

Nightingale 夜莺监控 开源监控

QMS质量管理系统:质检数据如何赋能工厂持续改进?

万界星空科技

数字化转型 智能质检 万界星空科技mes QMS 质量管理QMS系统

达索多物理场有限元仿真软件Abaqus介绍-达索指定代理商思茂信息

思茂信息

仿真 abaqus 有限元分析

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