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。

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

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

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多