写点什么

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

评论

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

鸿蒙ArkTS | Badge 信息标记组件自学指南

李游Leo

鸿蒙 HarmonyOS

1688商品评论API接口攻略

tbapi

1688商品评论接口 1688评论API 1688评论数据采集

详解鸿蒙开发如何上传三方库到ohpm仓库

幽蓝计划

高效拆分用户故事

俞凡

敏捷开发

《算法导论(第4版)》阅读笔记:p173-p174

codists

算法

鸿蒙仓颉语言开发实战教程:实现商品分类页

幽蓝计划

全新小艺上车鸿蒙智行尊界S800,启领智慧出行新范式

极客天地

【HarmonyOS 5】鸿蒙中的UIAbility详解(三)

GeorgeGcs

从试验田到深水区,AI落地的福州答卷

脑极体

AI

SpringBoot项目的html页面使用axios进行get post请求

刘大猫

人工智能 算法 post GET axios

Web端实时通信技术SSE在携程机票业务中的实践应用

JackJiang

网络编程 即时通讯 IM

【HarmonyOS 5】鸿蒙中的UIAbility详解(二)

GeorgeGcs

【HarmonyOS 5】鸿蒙中的UIAbility详解(一)

GeorgeGcs

业务流程建模指南

俞凡

架构

基于YOLOv8的农业虫害检测102 类农业害虫识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能

GeorgeGcs

鸿蒙 文档扫描 表格扫描

鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程

北京好雨科技有限公司

k8s rainbond 容器平台 企业号 5 月 PK 榜 信创国产化

明基专业编程显示屏618优惠,程序员入手就趁现在!

陈老老老板

别再堆MCP工具了!好用的AI Agent,始于一个“懂你”的System Prompt

RockBot

[大厂实践] LLM加速大规模测试迁移

俞凡

人工智能 测试

1688店铺订单接口指南攻略

tbapi

1688订单物流接口 1688店铺订单接口 1688店铺订单详情接口

5 分钟搞定 Go 自定义结构体标签

俞凡

golang

Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)

刘大猫

人工智能 算法 数据分析 权限控制 shiro

华为浏览器上线高考频道,打造一站式智慧助考服务

最新动态

基于YOLOv8的汽车车牌位置实时检测项目【完整源码数据集+PyQt5界面+完整训练流程+开箱即用!】

申公豹

yolov8

战略实践:7 步改变未来

俞凡

战略

是时候跟虚拟机说再见了?

北京好雨科技有限公司

k8s rainbond 容器平台 企业号 5 月 PK 榜 信创国产化

鸿蒙仓颉语言开发教程:自定义弹窗

幽蓝计划

征程 6EM 常见 QConfig 配置解读与示例

地平线开发者

自动驾驶 算法工具链 地平线征程6

DeepSeek‑R1-0528 重磅升级:蚂蚁百宝箱免费、无限量调用

猫头虎

人工智能 DeepSeek DeepSeek v3 DeepSeek R1 模型

【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解

GeorgeGcs

H5 HarmonyOS 小游戏 Laya 构建鸿蒙

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