NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

【字体反爬】猫X眼YingShi,我们又来欺负你了,用到了 OCR 识别技术

梦想橡皮擦

Python 爬虫 7月月更

ModuleNotFoundError_No_module_named通俗的解释和方法

和牛

测试

不懂点儿统计学,《星球大战》白看了

图灵教育

统计学 贝叶斯定理

业务出海,灵感乍现前要先「把手弄脏」

融云 RongCloud

视频聊天源码——一对一直播系统源码

开源直播系统源码

软件开发 直播系统源码 开源源码

重磅预告!易观分析联合微软、中央财经大学,共话数字经济

易观分析

数据驱动

大咖说·图书分享 | HaaS 物联网设备云端一体开发框架

大咖说

阿里巴巴 物联网 大咖 HaaS

百度工程师眼中的云原生可观测性追踪技术

百度Geek说

Java 云原生

瓜分30万奖金!DeepRec CTR模型性能优化天池挑战赛来啦

阿里云大数据AI技术

深度学习

洞见科技纪凯:隐私计算助力「全链路」金融客户经营

洞见科技

隐私计算

李宏毅《机器学习》丨4. Deep Learning(深度学习)

AXYZdong

机器学习 7月月更

6W+字记录实验全过程 | 探索Alluxio经济化数据存储策略

Alluxio

数据湖 数据膨胀 降本增效 Alluxio 大数据 开源

如何用度量数据驱动代码评审的改善

思码逸研发效能

数据分析 研发效能 科技 效能度量

深圳web前端技术学习费用是多少?尚硅谷前端培训

小谷哥

华为云:一切皆服务,共建全场景智慧金融

Geek_2d6073

直播预告 | 7月22日《开源安全治理模型和工具》线上研讨会

安势信息

开源安全 SCA工具 开源软件供应链 SBOM SLSA

21条最佳实践,全面保障 GitHub 使用安全

SEAL安全

GitHub 安全

TMECH发表优必选运控技术最新进展:实现人形机器人高鲁棒性行走

优必选科技

大数据开发技术入门学习方法有哪些

小谷哥

如何学习好web前端开发技术知识

小谷哥

国产操作系统生态建设,小程序技术来帮忙

Speedoooo

小程序 国产操作系统 小程序容器 桌面应用

纯css实现:如何做个完美的平行四边形

南极一块修炼千年的大冰块

7月月更

NFT链游戏系统开发元宇宙GameFi搭建

薇電13242772558

dapp NFT 元宇宙

CSDN Meetup 回顾 丨从数据湖到指标中台,提升数据分析 ROI

Kyligence

数据分析 指标中台

7月《中国数据库行业分析报告》发布!居安思危,安全先行

墨天轮

数据库 腾讯云 阿里云 国产数据库 数据库安全

LP流动性质押挖矿系统开发详细程序

开发微hkkf5566

openGauss内核分析:查询重写

华为云开发者联盟

数据库 后端 查询 SQL语言 openGauss内核

架构实战营模块七作业

Geek_Q

零基础如何学习大数据开发知识

小谷哥

尚硅谷SSM新版视频教程发布

小谷哥

单元测试,写起来到底有多痛?你会了吗

C++后台开发

网络编程 单元测试 后端开发 Linux服务器开发 C++开发

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