我目前正在配置Jenkins作业,为iOS项目运行一套单元测试,并使用Cobertura发布代码覆盖率结果 . 我正在使用Slather为Cobertura生成.xml覆盖率报告 . 我遇到的问题是slather覆盖范围似乎实际上没有输出到列出的--output-directory目录 .

Jenkins Execute Shell:

/usr/local/bin/slather coverage \
--cobertura-xml -x --output-directory ${WORKSPACE}/MyProject/test-reports/coveragereport \
--source-files MyProject/WebServices \
--verbose \
-s \
--scheme MyProjectTests \
--binary-file MyProject/artifacts/MyProject.app/MyProject \
MyProject/MyProject.xcodeproj

我为输出尝试了几种不同的语法变体:

  • --cobertura-xml $ / MyProject / test-reports / coveragereport

  • -x --output-directory $ / MyProject / test-reports / coveragereport

我已尝试使用各种输出目录,使用和不使用工作空间变量,以防它在使用默认根时遇到问题 .

Jenkins Console:

Test Coverage: 26.72%
Slathered
Recording test results
[Cobertura] Publishing Cobertura coverage report...
[Cobertura] No coverage results were found using the pattern 'MyProject/test-reports/coveragereport/*.xml' relative to '/Users/jenkins/workspace/iOS/myproject/Unit_Tests'.  Did you enter a pattern relative to the correct directory?  Did you generate the XML report(s) for Cobertura?
Build step 'Publish Cobertura Coverage Report' changed build result to FAILURE

我们可以看到测试覆盖结果表明了覆盖范围正在起作用,但是Cobertura无法找到该报告 . 这当然是因为它正在寻找的 .xml 没有被生成/输出 .

TLDR:

知道我能做些什么来保证Cobertura正在寻找的 .xml 报告实际上是生成/输出的吗?