最佳实践 - Amazon CodeCatalyst

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

最佳实践

在使用提供的测试功能时 CodeCatalyst,我们建议您遵循以下最佳实践。

自动发现

在中配置操作时 CodeCatalyst,自动发现允许您自动发现各种工具(例如 JUnit 测试报告)的输出,并从中生成相关 CodeCatalyst报告。自动发现有助于确保即使发现的输出的名称或路径发生变化,仍能继续生成报告。添加新文件后, CodeCatalyst会自动发现它们并生成相关报告。但是,如果您使用自动发现,则必须考虑此功能的以下某些方面:

  • 当您在操作中激活自动发现时,所有自动发现的相同类型的报告都将共享相同的成功标准。例如,诸如最低通过率之类的共享标准将适用于所有自动发现的测试报告。如果您需要为相同类型的报告设置不同的标准,则必须明确配置这些报告中的每一个报告。

  • 自动发现还可以查找由您的依赖项生成的报告,如果配置了成功标准,则可能无法对这些报告执行操作。此问题可以通过更新排除路径配置来解决。

  • 不能保证自动发现每次都生成相同的报告列表,因为它会在运行时扫描操作。如果您希望始终生成特定的报告,则应明确配置报告。例如,如果测试作为构建的一部分停止运行,则测试框架将不会生成任何输出,因此不会生成任何测试报告,操作可能会成功。如果您希望操作的成功取决于该特定测试,则必须明确配置该报告。

提示

在开始新项目或现有项目时,请对整个项目目录(包括**/*)使用自动发现。这会调用项目中所有文件(包括子目录中的文件)生成报告。

有关更多信息,请参阅 配置报告

成功标准

您可以通过配置成功标准对报告强制执行质量阈值。例如,如果自动发现了两个代码覆盖率报告,一个的行覆盖率为 80%,另一个的行覆盖率为 60%,则有以下选项:

  • 将线路覆盖率的自动发现成功标准设置为 80%。这将导致第一份报告通过,第二份报告失败,从而导致整体操作失败。要解除对工作流程的封锁,请在项目中添加新的测试,直到第二份报告的行覆盖率超过 80%。

  • 将线路覆盖率的自动发现成功标准设置为 60%。这将导致两个报告都通过,从而导致操作成功。然后,你可以在第二份报告中着手增加代码覆盖率。但是,使用这种方法,您不能保证第一份报告中的覆盖率不会降至80%以下。

  • 使用可视化编辑器或为每个报告添加明确的 YAML 部分和路径,显式配置其中一个或两个报告。这将允许您为每个报告配置单独的成功标准和自定义名称。但是,使用这种方法,如果报告路径发生变化,操作可能会失败。

有关更多信息,请参阅 为报告配置成功标准

包含/排除路径

查看操作结果时,您可以调整 CodeCatalyst 通过配置IncludePaths和生成的报告列表ExcludePaths

  • 用于IncludePaths指定搜索报告时 CodeCatalyst 要包含的文件和文件路径。例如,如果您指定"/test/report/*",则会在操作使用的整个构建映像中 CodeCatalyst 搜索该/test/report/目录。当它找到该目录时, CodeCatalyst 然后在该目录中查找报告。

    注意

    对于手动配置的报告,IncludePaths必须是与单个文件匹配的 glob 模式。

  • 用于ExcludePaths指定搜索报告时 CodeCatalyst 要排除的文件和文件路径。例如,如果您指定"/test/reports/**/*",则 CodeCatalyst不会在/test/reports/目录中搜索文件。要忽略目录中的所有文件,请使用 **/* glob 模式。

以下是可能的 glob 模式的示例。

模式 描述

*.*

匹配当前目录中所有包含点的对象名称

*.xml

匹配当前目录中以结尾的所有对象名称 .xml

*.{xml,txt}

匹配当前目录中以.xml或结尾的所有对象名称 .txt

**/*.xml

匹配所有以结尾的目录中的对象名称 .xml

testFolder

匹配名为的对象testFolder,将其视为文件

testFolder/*

匹配子文件夹中一个级别中的对象testFolder,例如 testFolder/file.xml

testFolder/*/*

匹配子文件夹中两个级别的对象testFolder,例如 testFolder/reportsFolder/file.xml

testFolder/**

匹配子文件夹 testFolder 以及 testFolder 下的文件,如 testFolder/file.xmltestFolder/otherFolder/file.xml

CodeCatalyst 按如下方式解释全局模式:

  • 斜杠 (/) 字符分隔文件路径中的目录。

  • 星号 (*) 字符与不跨越文件夹边界的名称组分的零个或多个字符匹配。

  • 双星号 (**) 与所有目录中名称组分的零个或多个字符匹配。

注意

ExcludePaths优先于IncludePaths。如果两者都IncludePathsExcludePaths包含同一个文件夹,则不会扫描该文件夹以获取报告。