在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

评论

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

18 张图,一文了解 8 种常见的数据结构

爱好编程进阶

Java 程序员 后端开发

想从单体架构演进到分布式架构,SBA 会是一个不错的选择

华为云开发者联盟

架构 微服务架构 分布式架构 单体架构 SBA

2021最新Java学习路线,自学者的福利

爱好编程进阶

Java 程序员 后端开发

CXF webservice之手动启动服务方法(restful )

爱好编程进阶

Java 程序员 后端开发

ThinkPHP6+swoole+easywechat使用教程

CRMEB

字节跳动构建Data Catalog数据目录系统的实践

字节跳动数据平台

数据库 字节跳动 数据治理 数据目录

20年最新金九银十面试必备,教你一份文档吊打面试官,拿到offer

爱好编程进阶

Java 程序员 后端开发

大规模并行分布式深度学习

阿里云大数据AI技术

人工智能 深度学习 并行分布式训练

dubbo实战之二:与SpringBoot集成

爱好编程进阶

Java 程序员 后端开发

Docker下Prometheus和Grafana三部曲之三:自定义监控项开发和配置

爱好编程进阶

Java 程序员 后端开发

微信小程序开发系列 (四) :微信小程序的页面跳转路由设计

汪子熙

微信小程序 微信 前端开发 微信开发 4月月更

聊聊Kotlin中的lambda

北洋

kotlin Andriod 4月月更

28岁程序身价过亿,从字节提前“退休

爱好编程进阶

Java 程序员 后端开发

卫剑钒:《大教堂与集市》被过誉了吗?

腾源会

开源 腾源会

DockerFile的编写构建镜像步骤,常用命令和案例

爱好编程进阶

Java 程序员 后端开发

《Mybatis 手撸专栏》第6章:数据源池化技术实现

小傅哥

Java 面试 小傅哥 mybatis 源码学习

基于语义感知SBST的API场景测试智能生成

华为云开发者联盟

测试 语义感知 SBST 动态修正 ODG图

2021最新一次Java面试,快手三面一轮游,如今已拿意向书

爱好编程进阶

Java 程序员 后端开发

2021最新分享Java面试题库万字精华 github上标星80

爱好编程进阶

Java 程序员 后端开发

Docker Swarm从部署到基本操作

爱好编程进阶

Java 程序员 后端开发

大数据培训Spark SQL底层执行流程

@零度

Sparksql 大数据开发

企业文档协作如何进行?

小炮

文档协同

@RequestParam、@ModelAttribute、

爱好编程进阶

Java 程序员 后端开发

Dubbo如何处理业务异常,这个一定要知道哦!

爱好编程进阶

Java 程序员 后端开发

BS-XX-007基于JSP实现户籍管理系统

爱好编程进阶

Java 程序员 后端开发

Spark SQL 字段血缘在 vivo 互联网的实践

vivo互联网技术

大数据 spark Sparksql 数据处理

一种很爽的学习方法,被我Get到了!

博文视点Broadview

20 数据存储服务器集群的伸缩性设计

爱好编程进阶

Java 程序员 后端开发

小平邦彦:树懒style的世界一流数学家

图灵教育

数学 数学史 数学家

中国全球GPU市场竞争格局分析

Finovy Cloud

人工智能 gpu 云服务器

13W字!2021最新发布互联网大厂高频面试技术点!

爱好编程进阶

Java 程序员 后端开发

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