使用Fastlane生成CircleCI测试摘要

创建人: Jeremy Sherman

持续集成的核心是运行测试。 每当测试失败时,您都想知道为什么要尽快解决,以便您进行更正。 每当CI构建失败时,您都希望查看失败的测试及其失败方式。

CircleCI的“测试摘要”功能将此信息放在首位,因此您可以直接响应测试失败,而不会遇到任何麻烦。 诀窍是按预期方式为CircleCI提供测试信息。

构建日志可能很好启动。 您展开失败的步骤,滚动到页面的末尾,然后向上滚动直到遇到测试失败。

这还不错。 首先。

但是,对于一个足够大的项目,构建和测试日志会变得太长而无法在网页上就地查看。 然后,您会发现自己先下载了日志文件。

有时,失败的测试实际上并不是在文件末尾附近。 然后,您会四处寻找它。

在一个长期项目中的许多开发人员中,这段时间和精力加起来。

如果要构建iOS应用程序,并且将粘贴的示例配置复制并粘贴到CircleCI上,那么您应该会感到幸运。

但是,在以下情况下,您将希望更好地了解“测试摘要”功能正在寻找什么:

  • 您的测试摘要会省略您想要的信息,例如棉绒输出。
  • 测试摘要不适用于您,您想修复它。
  • 您不是在使用Fastlane构建iOS应用,其他示例配置之一无法满足您的需求。

CircleCI的“收集测试元数据”文档指出了一件大事:

  • 使用JUnit的XML格式报告测试。

store_test_results步骤参考引用了另一个:

  • 您的测试报告应位于另一个“所有测试”目录的子目录中。

此子目录名称用于标识测试套件。

不过,还有一个要求是我从未在任何地方看到过文档:

  • JUnit XML测试报告文件必须在字面上具有xml扩展名。

对于测试摘要,文件名的其余部分似乎无关紧要,但是如果您使用错误的路径扩展名,则不会看到任何测试摘要。

您将得到一个目录布局,例如:

  /用户/蒸馏器/项目/ 
└──快车道
└──test_output
└──xctest
└──junit.xml3目录,1个文件

这打勾了所有框:

  • XML文件: junit.xml
  • “测试套件”目录: xctest
  • “所有测试套件”目录: test_output

(Fastlane仅生成单个测试报告,因此,“在文件夹中报告”的嵌套看起来有点愚蠢。)

扫描提供了许多配置旋钮。 您可以通过运行fastlane action scan查看完整列表的表及其默认值。

我们需要安排三件事:

  • 报告格式:JUnit
  • 报告文件名:junit.xml
  • 报告文件应写入的目录:fastlane / test_output / xctest

足够方便的是,Scan具有三个配置设置,每个配置都有一个。

扫描也恰好有三种不同的方式来设置这三个选项:

  • 在您的Fastfile中:使用关键字参数进行scan()
  • 在您的外壳中:使用选项标志
  • 任何地方(但可能在您的shell中):使用环境变量

在Fastfile中,您可以使用关键字参数将它们设置为scan方法调用:

 扫描( 
#…其他参数…
output_types:'junit',
output_files:'junit.xml',
output_directory:“ ./ fastlane / test_output / xctest”)

如果直接调用fastlane ,则可以使用CLI选项进行设置:

 快速通道扫描 
--output_directory =“ ./ fastlane / test_output / xctest” \
--output_types =“ junit” \
--output_files =“ junit.xml”

由于Ruby是Perl TMTOWTDI的真正后代,因此您还可以使用环境变量配置Scan:

 环保\ 
SCAN_OUTPUT_DIRECTORY =。/ fastlane / test_output / xctest \
SCAN_OUTPUT_TYPES = junit \
SCAN_OUTPUT_FILES = junit.xml \
快速通道扫描

(您还可以在CircleCI配置中的environment节中设置这些环境变量。六种方式之一,六种方式之一。)

现在,您有了Fastlane Scan,它使用JUnit格式将其测试报告写入一个建议性命名的子目录下的*.xml文件中。

为了使CircleCI能够真正处理经过精心安排的数据,您需要告诉store_test_results步骤,以便在fastlane/test_output以及其下方对所有内容进行fastlane/test_output

没错:不仅包含测试报告XML的xctest子目录,还包含目录。

将这一步添加到运行scan的管道中:

  -store_test_results: 
路径:“ ./ fastlane / test_output”

在某个时候,您可能希望自己查看测试报告以及整个构建日志。

您可以使用store_artifacts的几个步骤将两者作为构建工件发送到CircleCI上:

  -store_artifacts: 
路径:“ ./ fastlane / test_output”
目的地:扫描测试输出
-store_artifacts:
路径:〜/ Library / Logs / scan
目的地:扫描日志

您不仅限于一种工件或一种测试输出。 实际上,处理多种测试输出正是恰好存在文件夹中文件夹嵌套的原因。

假设您想让CircleCI调用SwiftLint nit。 您可以将此代码段放入jobs列表:

 皮棉: 
码头工人:
-图片:dantoml / swiftlint:最新步骤:
-结帐-运行:
名称:运行SwiftLint
命令:
mkdir -p ./test_output/swiftlint
swiftlint皮棉--strict-记者junit | 发球./test_output/swiftlint/junit.xml- store_test_results:
路径:“ ./ test_output”
-store_artifacts:
路径:“ ./ test_output”

链中的关键链接如下:

  • 创建一个“所有测试”目录: ./test_output/
  • 创建一个“测试套件”目录: ./test_output/swiftlint/
  • 将JUnit输出写入.xml文件: ./test_output/swiftlint/junit.xml
  • store_test_results对准该“所有测试”目录: path: "./test_output/"

您可以根据自己的需求调整任何输出,也可以让CircleCI在测试摘要中进行标注。

你有它:

  • 快速调试CI构建失败
  • 通过在主要房地产中放置相关测试详细信息
  • 通过将文件夹从精确定位的精确命名的测试报告文件上移两个步骤
  • 进入CircleCI的store_test_results构建步骤。持续集成的核心是运行测试。 每当测试失败时,您都想知道为什么要尽快解决,以便您进行更正。 每当CI构建失败时,您都希望查看失败的测试及其失败方式。
  • CircleCI的“测试摘要”功能将此信息放在首位,因此您可以直接响应测试失败,而不会遇到任何麻烦。 诀窍是按预期方式为CircleCI提供测试信息。

构建日志可能很好启动。 您展开失败的步骤,滚动到页面的末尾,然后向上滚动直到遇到测试失败。

这还不错。 首先。

但是,对于一个足够大的项目,构建和测试日志会变得太长而无法在网页上就地查看。 然后,您会发现自己先下载了日志文件。

有时,失败的测试实际上并不是在文件末尾附近。 然后,您会四处寻找它。

在一个长期项目中的许多开发人员中,这段时间和精力加起来。

如果要构建iOS应用程序,并且将粘贴的示例配置复制并粘贴到CircleCI上,那么您应该会感到幸运。

但是,在以下情况下,您将希望更好地了解“测试摘要”功能正在寻找什么:

  • 您的测试摘要会省略您想要的信息,例如棉绒输出。
  • 测试摘要不适用于您,您想修复它。
  • 您不是在使用Fastlane构建iOS应用,其他示例配置之一无法满足您的需求。

CircleCI的“收集测试元数据”文档指出了一件大事:

  • 使用JUnit的XML格式报告测试。

store_test_results步骤参考引用了另一个:

  • 您的测试报告应位于另一个“所有测试”目录的子目录中。

此子目录名称用于标识测试套件。

不过,还有一个要求是我从未在任何地方看到过文档:

  • JUnit XML测试报告文件必须在字面上具有xml扩展名。

对于测试摘要,文件名的其余部分似乎无关紧要,但是如果您使用错误的路径扩展名,则不会看到任何测试摘要。

您将得到一个目录布局,例如:

  /用户/蒸馏器/项目/ 
└──快车道
└──test_output
└──xctest
└──junit.xml3目录,1个文件

这打勾了所有框:

  • XML文件: junit.xml
  • “测试套件”目录: xctest
  • “所有测试套件”目录: test_output

(Fastlane仅生成单个测试报告,因此,“在文件夹中报告”的嵌套看起来有点愚蠢。)

扫描提供了许多配置旋钮。 您可以通过运行fastlane action scan查看完整列表的表及其默认值。

我们需要安排三件事:

  • 报告格式:JUnit
  • 报告文件名:junit.xml
  • 报告文件应写入的目录:fastlane / test_output / xctest

足够方便的是,Scan具有三个配置设置,每个配置都有一个。

扫描也恰好有三种不同的方式来设置这三个选项:

  • 在您的Fastfile中:使用关键字参数进行scan()
  • 在您的外壳中:使用选项标志
  • 任何地方(但可能在您的shell中):使用环境变量

在Fastfile中,您可以使用关键字参数将它们设置为scan方法调用:

 扫描( 
#…其他参数…
output_types:'junit',
output_files:'junit.xml',
output_directory:“ ./ fastlane / test_output / xctest”)

如果直接调用fastlane ,则可以使用CLI选项进行设置:

 快速通道扫描 
--output_directory =“ ./ fastlane / test_output / xctest” \
--output_types =“ junit” \
--output_files =“ junit.xml”

由于Ruby是Perl TMTOWTDI的真正后代,因此您还可以使用环境变量配置Scan:

 环保\ 
SCAN_OUTPUT_DIRECTORY =。/ fastlane / test_output / xctest \
SCAN_OUTPUT_TYPES = junit \
SCAN_OUTPUT_FILES = junit.xml \
快速通道扫描

(您还可以在CircleCI配置中的environment节中设置这些环境变量。六种方式之一,六种方式之一。)

现在,您有了Fastlane Scan,它使用JUnit格式将其测试报告写入一个建议性命名的子目录下的*.xml文件中。

为了使CircleCI能够真正处理经过精心安排的数据,您需要告诉store_test_results步骤,以便在fastlane/test_output以及其下方对所有内容进行fastlane/test_output

没错:不仅包含测试报告XML的xctest子目录,还包含目录。

将这一步添加到运行scan的管道中:

  -store_test_results: 
路径:“ ./ fastlane / test_output”

在某个时候,您可能希望自己查看测试报告以及整个构建日志。

您可以使用store_artifacts的几个步骤将两者作为构建工件发送到CircleCI上:

  -store_artifacts: 
路径:“ ./ fastlane / test_output”
目的地:扫描测试输出
-store_artifacts:
路径:〜/ Library / Logs / scan
目的地:扫描日志

您不仅限于一种工件或一种测试输出。 实际上,处理多种测试输出正是恰好存在文件夹中文件夹嵌套的原因。

假设您想让CircleCI调用SwiftLint nit。 您可以将此代码段放入jobs列表:

 皮棉: 
码头工人:
-图片:dantoml / swiftlint:最新步骤:
-结帐-运行:
名称:运行SwiftLint
命令:
mkdir -p ./test_output/swiftlint
swiftlint皮棉--strict-记者junit | 发球./test_output/swiftlint/junit.xml- store_test_results:
路径:“ ./ test_output”
-store_artifacts:
路径:“ ./ test_output”

链中的关键链接如下:

  • 创建一个“所有测试”目录: ./test_output/
  • 创建一个“测试套件”目录: ./test_output/swiftlint/
  • 将JUnit输出写入.xml文件: ./test_output/swiftlint/junit.xml
  • store_test_results对准该“所有测试”目录: path: "./test_output/"

您可以根据自己的需求调整任何输出,也可以让CircleCI在测试摘要中进行标注。

你有它:

  • 快速调试CI构建失败
  • 通过在主要房地产中放置相关测试详细信息
  • 通过将文件夹从精确定位的精确命名的测试报告文件上移两个步骤
  • 到CircleCI的store_test_results构建步骤。

如果您喜欢刚刚阅读的内容,请点击下面的绿色掌声按钮,以便其他人可能会偶然发现。 想要更多类似这样的博客,请访问 Big Nerd Ranch