速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

LeetCode题解:52. N皇后 II,回溯+哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

拆解增长黑客之知识篇

懒杨杨

产品 运营 增长

Kafka 和 RocketMQ 之性能对比

中间件兴趣圈

kafka 源码分析 RocketMQ 中间件 性能分析

Windows下常用软件配置

jiangling500

windows 软件配置

系统安全与高可用

天天向上

保障系统稳定高可用的方案

天天向上

极客大学架构师训练营

【得物技术】搜索引擎技术简介

得物技术

搜索引擎 技术 算法 排序 搜索

智能与影像的强耦合:华为Mate 40系列的视觉探索

脑极体

可参考才是有价值的,架构设计的技改之路从来都不容易

互联网应用架构

架构设计

第二周作业

Geek_b9053c

依赖倒置原则

HTTP协议概述

落日楼台H

https HTTP 协议 HTTP2.0 HTTP3.0

架构词典: 复盘

lidaobing

架构 复盘

京东云的云原生理念及Serverless最佳实践

lidaobing

区块链中的保险行业

13828808769

区块链技术应用开发 保险理赔

智慧公安大数据分析平台开发解决方案

t13823115967

大数据 智慧公安

vue高级进阶系列——用typescript玩转vue和vuex

徐小夕

Java vue.js Vue 大前端

架构师训练营第十一周

我是谁

极客大学架构师训练营

依赖倒置原则以及接口隔离方式实现接口设计

我们新四军不拿群众一针一线

只能用分布式锁,也能搞定每秒上千订单的高并发优化?

Java架构师迁哥

《操作系统概述》-第六版

计算机与AI

操作系统

腾讯 WXG 后台开发工程师对 MySQL 索引知识点总结

Java架构师迁哥

从战略到战略决策

Alan

战略管理 使命 愿景 战略思考 MVO

两年竞业禁止、没有赔偿的CTO | 法庭上的CTO(1)

赵新龙

CTO 竞业禁止 试用期

第一周作业

极客大学 极客大学架构师训练营

架构师训练营第二周课后作业

万有引力

我对业务方提出需求的态度

boshi

随笔杂谈 需求落地

ETV全球熵APP系统开发|ETV全球熵软件开发

系统开发 现成系统

公安警务大数据可视化平台开发建设

t13823115967

大数据 智慧公安

Defi系统APP开发|Defi软件开发

系统开发

Week 11 work

黄立

吴桐:2021年中国区块链产业发展的六大趋势

CECBC

区块链 新基建

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