Swift 测试在本地通过,但在 Travis-CI 上构建失败

Posted

技术标签:

【中文标题】Swift 测试在本地通过,但在 Travis-CI 上构建失败【英文标题】:Swift tests pass locally but the build fails on Travis-CI 【发布时间】:2015-06-26 12:29:04 【问题描述】:

我正在尝试设置我的cocoapod 项目,以便在推送后在 Travis-CI 上运行它的测试。我正在使用 xctool 0.2.4 运行测试,它在本地执行良好。但是一旦它在 Travis-CI 上运行,编译构建步骤就会由于各种原因而失败,我似乎无法在本地重现。

xctool test -project test/MEViewExtensions.xcodeproj -scheme MEViewExtensions -sdk iphonesimulator

这里有两个在我的机器上运行良好的故障:

https://travis-ci.org/materik/meviewextensions/builds/68458750

Basic Block in function '_TFE16MEViewExtensionsCSo8UIScreeng5widthV12CoreGraphics7CGFloat' does not have terminator!
label %entry2
LLVM ERROR: Broken function found, compilation aborted! 

https://travis-ci.org/materik/meviewextensions/builds/68465719

/Users/travis/build/materik/meviewextensions/test/MEViewExtensionsTests/UIViewTests.swift:22:33: error: type '@autoclosure () -> CGFloat' does not conform to protocol 'FloatLiteralConvertible'
        XCTAssertEqual(view2.x, 10.0)

我至少希望在我的机器上得到相同的错误,以便能够对其进行调试。有什么想法吗?

【问题讨论】:

【参考方案1】:

问题是我在 Xcode 6.3 上使用较新版本的 Swift 运行测试,而 Travis 测试是在 Xcode 6.1 上运行带有不同类型错误的旧版本。必须将osx_image: beta-xcode6.3 添加到我的.travis.yml 文件中以强制Travis 在更高版本上运行,然后就可以了。

【讨论】:

以上是关于Swift 测试在本地通过,但在 Travis-CI 上构建失败的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Swift 连接到本地 Firebase 服务器?

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

Swift 邮件程序错误 500

在 jenkins 上测试失败但在本地运行

Azure DevOps 管道 VS 测试失败。所有这些单元测试都在本地通过

Maven 测试在本地运行但在 github 操作中失败