使用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