写点什么

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

评论

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

白皮书商业计划书编写 了解白皮书在区块链稳定币开发中的作用

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

【论文解读】人工智能时代的科学发现

合合技术团队

人工智能 数据 科学

再创新高!深开鸿OpenHarmony社区代码贡献量超过200万行!

极客天地

云起无垠参编中国信通院《软件供应链安全能力中心建设指南》正式发布

云起无垠

GLB/GLTF在线纹理编辑

3D建模设计

GLTF glb 材质 纹理 贴图

渲染软件大盘点!快来看看你适合哪款吧!

Finovy Cloud

渲染 渲染软件

体验提升-一个“小技巧”彻底解决锦礼商品可见不可售 | 京东云技术团队

京东科技开发者

算法 过滤算法 企业号10月PK榜

@Scope 注解失效了?咋回事

江南一点雨

Java spring

深度学习之目标定位

矩视智能

机器视觉 深度学习、

循环数组,一个可以释放无锁队列的力量

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟

产品经理视角 | API接口知识小结

Noah

产品经理 API接口文档 API产品经理

提升代码重用性:模板设计模式在实际项目中的应用

树上有只程序猿

模板模式

CogVLM:智谱AI 新一代多模态大模型

极客天地

GPT-4 即将超越拐点;5.5G 手机或明年上半年商用;AI 音乐或将成行业标配丨 RTE 开发者日报 Vol.65

声网

Mac电脑屏幕分辨率修改 SwitchResX正式激活版

胖墩儿不胖y

Mac软件 屏幕分辨率工具 分辨率调整软件

营销黑科技再升级:百度营销擎舵数字人4.0 带来哪些惊喜?

极客天地

AI & Web3 盛会「EDGE」在港闭幕,融云国际影响力持续提升

融云 RongCloud

AI 技术 edge 峰会 web3

即时通讯音视频开发(二十):一文读懂视频的颜色模型转换和色域转换

JackJiang

网络编程 即时通讯 IM

记一次Redis Cluster Pipeline导致的死锁问题

vivo互联网技术

dubbo 死锁 redis cluster pipeline Arthas

搞流式计算,大厂也没有什么神话

字节跳动云原生计算

flink 云原生 流式计算

基于 P-Tuning v2 进行 ChatGLM2-6B 微调实践 | 京东云技术团队

京东科技开发者

人工智能’ ChatGLM2-6B 企业号10月PK榜

DApp钱包OP链智能合约质押挖矿系统开发源码丨案例丨演示

l8l259l3365

【交付高质量,用户高增长】-用户增长质量保证方法论 | 京东云技术团队

京东科技开发者

质量管理 测试 测试 单元测试 质量保证 企业号10月PK榜

自动化模式下,企业全面预算管理的提升

智达方通

自动化 全面预算管理 预测分析

FISCO BCOS | 构建第一个区块链应用程序

BSN研习社

区块链 FISCO BCOS 区块链开发

Redis魔法:点燃分布式锁的奇妙实现

互联网工科生

分布式锁 redis 底层原理

产品经理的API文档阅读指南

Noah

产品经理 API接口文档

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