测试在 Xcode 中通过,但在 Circleci 上失败

Posted

技术标签:

【中文标题】测试在 Xcode 中通过,但在 Circleci 上失败【英文标题】:Tests pass in Xcode but fail on Circle CI 【发布时间】:2015-09-05 15:15:03 【问题描述】:

问题: 对于this pull request,测试在 CircleCI 上没有通过,但测试在本地通过。为什么?


CircleCI test output 显示所有FBSnapshotTestCase 测试的失败。例如:

✗ testAdjustsFontSizeToFitWidth,((comparisonSuccess__)为真)失败 - 快照比较失败:错误域 = FBSnapshotTestControllerErrorDomain 代码 = 1“无法加载参考图像。” UserInfo=0x7f85f36b0a50 NSLocalizedFailureReason=未找到参考图像。需要在录制模式下运行测试,NSLocalizedDescription=无法加载参考图片,FBReferenceImageFilePathKey=/Users/distiller/TTTAttributedLabel/Example/TTTAttributedLabelTests/ReferenceImages_32/TTTAttributedLabelTests/testAdjustsFontSizeToFitWidth@2x.png

[…]

✗ testAttributedTruncationToken, ((comparisonSuccess__) is true) failed - 快照比较失败:错误域=FBSnapshotTestControllerErrorDomain Code=1“无法加载参考图像。” UserInfo=0x7f85f35b06d0 NSLocalizedFailureReason=未找到参考图像。您需要在记录模式下运行测试,NSLocalizedDescription=无法加载参考图像。,FBReferenceImageFilePathKey=/Users/distiller/TTTAttributedLabel/Example/TTTAttributedLabelTests/ReferenceImages_32/TTTAttributedLabelTests/testAttributedTruncationToken@2x.png

但是,相同的测试在本地通过:

在 CircleCI 上,测试使用不存在的 ReferenceImages_32 目录:

/Users/distiller/TTTAttributedLabel/Example/TTTAttributedLabelTests/ReferenceImages_32/TTTAttributedLabelTests/testAdjustsFontSizeToFitWidth@2x.png

不过,图片确实存在于ReferenceImages_64 中。我希望使用_64 目录,因为circle.yml 文件指定使用iPhone 6 模拟器:

dependencies:
  pre:
    - xcrun instruments -w "iPhone 6 (8.3 Simulator)" || exit 0
  override:    
    - sudo gem install cocoapods xcpretty obcd -N
    - pod install --project-directory=Example
test:
  override:
    - set -o pipefail && xcodebuild -workspace 'Example/Espressos.xcworkspace' -scheme 'Espressos'
      -sdk iphonesimulator -destination "platform=ios Simulator,name=iPhone 6"
      GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES clean test | xcpretty -c
      --report junit --output $CIRCLE_TEST_REPORTS/junit.xml
是什么原因造成的? 如何让测试通过 CircleCI? 可能相关:this FBSnapshotTestCase issue

【问题讨论】:

【参考方案1】:

您是否尝试过在没有缓存的情况下运行构建?这通常可以为我解决这些问题。要构建无缓存,只需单击右上角的按钮。

【讨论】:

以上是关于测试在 Xcode 中通过,但在 Circleci 上失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 11 中通过 Fastlane 构建 SPM 包不起作用

使用 CircleCI 和 Minitest 进行前端测试:测试等待页面加载的时间不够长

如何在 Xcode 中通过代码触发按钮

在xcode中通过sqlite3检查存在

如何连接到 CircleCI 上的原生 Selenium

在Xcode 8中通过一些错误运行项目后[重复]