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。

编辑推荐精选

讯飞智文

讯飞智文

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

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

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

讯飞星火

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

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

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

Spark-TTS

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

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

Trae

Trae

字节跳动发布的AI编程神器IDE

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

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多