gradle-test-logger-plugin

gradle-test-logger-plugin

Gradle测试日志美化插件

gradle-test-logger-plugin是一款Gradle测试日志美化插件,可在控制台输出美观的测试日志。该插件支持多种主题样式,提供可自定义的日志输出和并行测试执行功能。通过简单配置,用户可控制异常、堆栈跟踪、慢测试阈值等显示选项,使测试日志更加清晰易读。插件兼容新版Gradle,并支持灵活的项目级和任务级配置,方便开发者个性化定制测试日志输出。

Gradle测试日志插件主题配置Github开源项目

Gradle 测试日志插件

Gradle 插件门户 CircleCI 分支 AppVeyor 分支 Coveralls 分支 许可证 Twitter 关注

一个用于在运行测试时在控制台上打印漂亮日志的 Gradle 插件。

截图

标准主题

标准主题

Mocha 主题

Mocha 主题

向下滚动查看更多主题和自定义选项,或访问截图页面以获取更多演示。

使用方法

使用插件 DSL

plugins { id 'com.adarshr.test-logger' version '4.0.0' }

使用传统插件应用方式

buildscript { repositories { maven { url 'https://plugins.gradle.org/m2/' } } dependencies { classpath 'com.adarshr:gradle-test-logger-plugin:4.0.0' } } apply plugin: 'com.adarshr.test-logger'

兼容性矩阵

测试日志插件版本最低 Gradle 版本
1.x4.x
2.x5.x
3.x6.5
4.x7.6

配置

该插件在项目级别以及每个 Test 类型的任务中注册了一个名为 testlogger(全小写且为一个单词)的扩展。

以下显示了在未配置任何内容时应用的完整默认配置。

testlogger { theme 'standard' showExceptions true showStackTraces true showFullStackTraces false showCauses true slowThreshold 2000 showSummary true showSimpleNames false showPassed true showSkipped true showFailed true showOnlySlow false showStandardStreams false showPassedStandardStreams true showSkippedStandardStreams true showFailedStandardStreams true logLevel 'lifecycle' }

项目级别与任务级别配置

在项目级别配置的设置可以通过在任务级别重新定义来覆盖。任务级别未定义的设置将继承项目级别的值。考虑以下配置。

testlogger { theme 'mocha' // 项目级别 slowThreshold 5000 } test { testlogger { theme 'standard-parallel' // 任务级别 } }

在上面的示例中,有效的主题将是 standard-parallelslowThreshold 将为 5000,而其他设置将保留其默认值。

在运行时覆盖设置

上述所有设置可以在 build.gradle 中指定,也可以在运行时使用系统属性设置,或者两者都使用。例如,我们可以在构建文件中将 theme 设置为 mocha,但可以在运行时通过在命令行上使用 -Dtestlogger.theme=standard 将其覆盖为 standard。由于它们是系统属性,我们有多种方式指定它们,包括 JAVA_OPTSgradle.properties

  • 确定系统属性名称的约定是 testlogger.<配置设置>
  • 系统属性覆盖将在合并任务和项目级别设置后应用。
  • 指定系统属性覆盖将对所有任务应用相同的设置,无论构建文件中定义了什么配置。

切换主题

testlogger { theme 'mocha' }

当前支持以下主题:

  1. plain - 不显示颜色或 Unicode 符号
  2. standard - 显示颜色但不显示 Unicode 符号
  3. mocha - 类似于 Mochaspec 报告器 打印的内容,带有颜色和 Unicode 符号
  4. plain-parallel - 类似于 plain 主题,但支持并行测试执行
  5. standard-parallel - 类似于 standard 主题,但支持并行测试执行
  6. mocha-parallel - 类似于 mocha 主题,但支持并行测试执行

隐藏异常

默认情况下,showExceptions 标志是打开的。这会显示测试失败的原因,包括失败的位置。当然,你可以通过将 showExceptions 设置为 false 来关闭这种稍微详细的日志记录。

testlogger { showExceptions false }

隐藏异常堆栈跟踪

有时只查看异常消息而不查看堆栈跟踪会很有用。这可以通过将 showStackTraces 设置为 false 来配置。

testlogger { showStackTraces false }

隐藏异常原因

插件的默认行为是打印异常的所有原因。如果你觉得这太冗长,可以通过将 showCauses 设置为 false 来关闭它。

testlogger { showCauses false }

显示完整的异常堆栈跟踪

就像 Gradle 本身一样,默认情况下只打印堆栈跟踪中最后一个与测试类名匹配的帧。对于绝大多数情况来说,这已经足够了。有时,为了查看整个堆栈跟踪,需要移除这个过滤。可以通过将 showFullStackTraces 设置为 true 来实现。

testlogger { showFullStackTraces true }

定义慢速阈值

运行时间过长的测试将记录其持续时间。然而,"慢"是一个相对的术语,根据正在执行的测试类型、环境、项目类型和各种其他因素而有很大的差异。因此,你可以根据自己的需求定义你认为的慢速。

testlogger { slowThreshold 5000 }

slowThreshold 的默认值是 2 秒。因此,所有运行时间超过一秒的测试都会记录其实际执行时间。

如果你想完全关闭时间记录,只需将阈值设置为一个非常大的值。

请注意,在支持颜色的主题中,如果持续时间大于慢速阈值的一半,则会使用警告样式显示。例如,如果 slowThreshold 为 5 秒,那么运行时间超过 2.5 秒的任何测试都会使用警告样式记录其持续时间,而运行时间超过 5 秒的测试则使用错误样式。

隐藏摘要

默认情况下,会显示一个有用的摘要,其中包含通过、失败和跳过的测试的细分,以及执行所有测试所需的总时间。当然,如果你更喜欢简洁的输出,可以禁用此功能。

testlogger { showSummary false }

显示简单名称

如果你不喜欢看到用于显示测试套件名称的长的、完全限定的类名,可以通过将以下标志设置为 true 来选择只显示简单名称

testlogger { showSimpleNames true }

显示标准流

可以使用以下配置控制标准输出和错误流与测试日志一起显示。

testlogger { showStandardStreams true }

过滤标准流

如果启用了显示标准输出和错误流,它往往会产生太多输出,使人难以应付。 幸运的是,我们可以根据测试结果的类型来过滤这些输出。

testlogger { showStandardStreams true showPassedStandardStreams false showSkippedStandardStreams false showFailedStandardStreams true }

默认情况下,这三个过滤标志都是启用的。换句话说,如果启用了showStandardStreams但没有配置任何过滤标志,则不会过滤标准流输出。

如果将showStandardStreams设置为false,过滤标志将不起任何作用。

过滤测试结果

有时隐藏某种类型的测试结果会很有用。例如,如果一个应用程序有数百个测试,通过测试产生的大量输出可能足以掩盖任何有价值的测试失败。同样,可能需要隐藏跳过的测试,或者在极少数情况下甚至隐藏失败的测试。

我们可以使用以下设置来执行测试结果过滤。

testlogger { showPassed false showSkipped false showFailed true showOnlySlow false }

默认情况下,showPassedshowSkippedshowFailed标志是打开的,而showOnlySlow是关闭的。如果你选择通过将showStandardStreams标志设置为true来显示标准流,被过滤掉的测试产生的任何输出都不会显示。

更改日志级别

默认情况下,结果以标准的lifecycle Gradle日志级别输出。这可以通过logLevel进行配置。例如,以下设置将在使用--quiet运行时也输出结果。

testlogger { logLevel 'quiet' }

testloggerTest.testLogging之间的关系

在可能的情况下,插件的testlogger扩展会尝试响应Gradle的Test.testLogging扩展的等效属性。但是,如果在testlogger扩展下明确配置了一个值,插件__不会__响应Test.testLogging的相应属性。下表更详细地演示了这一点。

属性Test.testLoggingtestlogger有效值
showStandardStreamstrue未配置true
showStandardStreamstruefalsefalse
showStandardStreamsfalsetruetrue
showExceptionstrue未配置true
showExceptionstruefalsefalse
showExceptionsfalsetruetrue
showStackTracestrue未配置true
showStackTracestruefalsefalse
showStackTracesfalsetruetrue
showFullStackTracestestLogging.exceptionFormat = FULL未配置true
showFullStackTracestestLogging.exceptionFormat = SHORT未配置false
showFullStackTracestestLogging.exceptionFormat = FULLfalsefalse
showFullStackTracestestLogging.exceptionFormat = SHORTtruetrue
showCausestrue未配置true
showCausestruefalsefalse
showCausesfalsetruetrue

换句话说,显式配置的testlogger属性,即使是false,也优先于Test.testLogging的任何值。

Kotlin DSL

如果你使用Kotlin DSL,testlogger扩展DSL的语法会略有变化。以下是使用Kotlin DSL样式的默认配置属性。

testlogger { theme = ThemeType.STANDARD showExceptions = true showStackTraces = true showFullStackTraces = false showCauses = true slowThreshold = 2000 showSummary = true showSimpleNames = false showPassed = true showSkipped = true showFailed = true showOnlySlow = false showStandardStreams = false showPassedStandardStreams = true showSkippedStandardStreams = true showFailedStandardStreams = true logLevel = LogLevel.LIFECYCLE }

关于Kotlin DSL的一个注意事项是,如果你有子项目试图使用与父项目不同的testlogger设置,语法会略有变化。

subprojects { apply { plugin("com.adarshr.test-logger") } configure<TestLoggerExtension> { theme = ThemeType.STANDARD showExceptions = true ... } }

常见问题

它在Windows上可以工作吗?

大部分可以。standardplain主题可以直接使用,但当使用mocha主题时,你可能需要对系统设置进行一些修改才能看到Unicode符号。

  1. 设置或更新JAVA_OPTS系统属性为-Dfile.encoding=UTF-8
  2. 通过执行chcp 65001将终端代码页更改为65001

如何在运行时禁用颜色和Unicode符号,例如在Jenkins控制台上?

你可以通过在Gradle命令行中添加--console=plain来关闭ANSI控制字符和Unicode符号。

它支持并行测试执行吗?

是的。不过你需要切换到合适的并行主题。这可以是plain-parallelstandard-parallelmocha-parallel中的一个。并行主题专门设计用于maxParallelForks设置大于1的情况。它们通过牺牲对测试进行分组的能力来实现这一点,因此会失去一些可读性。

这个插件可以与junit-platform-gradle-plugin共存吗?

由于某些未知原因,junit-platform-gradle-plugingradle-test-logger-plugin不兼容。如果你仍在使用junit-platform-gradle-plugin,值得注意的是这个插件在JUnit Platform 1.2中被弃用,并在JUnit Platform 1.3中被移除。

然而,测试日志器插件完全兼容Gradle原生方式使用JUnit 5。

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

下拉加载更多