如何通过 .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)