如何通过 .ipa 在 Xcode for iOS 中运行自动化 XCUITests

Posted

技术标签:

【中文标题】如何通过 .ipa 在 Xcode for iOS 中运行自动化 XCUITests【英文标题】:How to run automated XCUITests in Xcode for iOS via .ipa 【发布时间】:2017-11-30 16:32:51 【问题描述】:

我面临一个最终导致以下错误的问题 -

The bundle “$(PRODUCT_NAME)” couldn’t be loaded because its executable couldn’t be located. Try reinstalling the bundle.
Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo=
NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted

我一直在努力使我的 UITest 自动化,但我间歇性地(虽然 80% 的时间)面临上述问题。

我正在命令行中使用以下命令。

xcodebuild -project Commute.xcodeproj -scheme CommuteUITests -configuration Debug test -destination "platform=ios,name=$DEVICE_NAME" -derivedDataPath $DERIVED_DATA_DIR -only-testing:CommuteUITests/$SUITE . 

一切都有通常的含义,但这会导致上述错误,而且我有时会提供多个目的地。

另一方面,我想运行 .ipa 而不是通过源代码构建。

所以这里基本上有2个问题-

为什么我会收到这些错误,我在互联网上徘徊,但我没有 能够找到解决方案吗? 如何开始我的测试以测试 .ipa?

有人请帮助我,我被困在这里很长时间了,非常感谢任何帮助/指针。

【问题讨论】:

清理并重新构建项目> 不起作用..我仍然收到相同的错误无法加载捆绑包“$(PRODUCT_NAME)”,因为无法找到其可执行文件。尝试重新安装捆绑包。 这里有答案的人,我收到上述错误。请告诉它是否可以解决。 【参考方案1】:

如果您仍然遇到此问题,请检查您的测试是否选择了正确的 info.plist 文件。如果测试选择了不正确的 info.plist 文件,将导致以下错误:

The bundle “$(PRODUCT_NAME)” couldn’t be loaded

我知道你没有使用 cocoapods,但这个人也有同样的问题:

https://github.com/CocoaPods/CocoaPods/issues/7178

因此,请确保您的测试使用正确的 info.plist。希望这会有所帮助!

【讨论】:

我自己解决了这个问题...实际上我在我的项目中导入了一些第 3 方 livrary,其中包含 Info.plist 并且看起来这个 plist 文件是我问题的原因...。我删除了这个文件,一切都恢复正常了。谢谢!! @user2606782 没问题。我的答案有点相关:)如果你可以将它标记为这个问题的正确答案,因为这就是问题所在:)【参考方案2】:

由于上述答案不够充分,以下是我的补充见解:

是的,加载了一个不应加载的 Info.plist 文件。但它是从哪里来的呢?

我的测试目标(特别是我的 UI 测试目标)有一个自己的 Info.plist 文件,这很好,直到我决定利用 Xcode 现在提供的 @testable 机会。 在 Xcode 中打开项目的文件浏览器: +0 然后 +1 在底部的搜索栏中输入Info.plist

现在我有两个引用的 Info.plist 文件:

    Info.plist 具有目标应用程序的目标成员资格(这些类也通过 @testable 导入) Info.plist with Target Membership 是(UI)测试目标

只需取消选择第二个Info.plist Target 会员资格(或删除它,如果您不再需要它)就可以了。

【讨论】:

以上是关于如何通过 .ipa 在 Xcode for iOS 中运行自动化 XCUITests的主要内容,如果未能解决你的问题,请参考以下文章

手动安装ipa,通过XCode手动安装包iOS App, ipa Devices and Simulators

Jenkins 生成的 ipa 无法在 iPhone 上安装(iOS 9 + XCode 7.1)

通过 Xcode 安装 iOS IPA,钥匙串中没有证书,也没有安装配置文件

无法通过 iTunes 安装 .ipa

【iOS开发】打包成ipa的方法

【iOS开发】打包成ipa的方法