测试目标 X 遇到错误(早期意外退出,操作从未完成引导 - 不会尝试重新启动
Test target X encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted
我已经开始使用 OCMock
为我已集成到我的项目工作区中的现有项目编写测试用例。完成此 link.
中提到的所有步骤后
当我第一次执行我的测试用例时,它给出了上面的错误。我搜索了它并尝试了一些解决方案,例如 创建新目标 、 重新启动 Xcode,但它并没有帮助我。有什么想法吗?
愿意分享我的答案,希望能节省别人的时间。
对我来说,.m 文件在构建阶段 - > 编译源下没有正确链接
就我而言,链接文件没有任何问题。
模拟器有点卡在应用程序触发的消息上,例如:"App name would like to send you notifications"。
按确定,下次我的 XCTests 工作正常。
就我而言,我在头文件中将 属性 声明为只读:
// In .h file
@property (nonatomic, readonly) NSUInteger count;
但我忘记将此声明添加到 .m 中,因此会生成 setter:
// In .m file
@property (nonatomic, assign) NSUInteger count;
愚蠢的错误,不完全确定它为什么会出现在这个错误中,但是将该行添加到 .m 中解决了问题。
我在这里有 Cocoapods 和 Carthage 的笔记和演示应用程序 https://github.com/onmyway133/TestTarget
- 确保所有框架都链接到测试目标
- 配置
Runpath Search Paths
指向 $(FRAMEWORK_SEARCH_PATHS)
更多信息
我正在使用 carthage,我遇到的问题是在测试目标中搜索依赖项。修正:
将 $(PROJECT_DIR)/Carthage/Build/iOS
添加到 Runpath Search Paths
您可以在这里找到参考资料:Carthage issue
在我的例子中,我的构建设置 -> 架构仅为 armv7 设置,我更改为 ARCHS_STANDARD,这与我的主机应用程序相同
在我的例子中,Build Active Architecture Only 被设置为 YES。
在项目和目标中:
Build Settings -> Architectures -> Build Active Architecture Only 应该是 NO 而不是 YES
我的情况很特殊。我使用了 2 个文件作为测试 类。一个工作完美,另一个有那个错误。
link 都针对同一个框架。
解决方案
CLEAR DERIVED DATA
Window => Projects => Delete (at your project)
祝你好运
测试愉快!
我的解决方案是在我的测试目标中添加一个 "Copy File phase"。
在那里,我将目标设置为 Frameworks 并使用 + 号添加了我的框架。
只是为了分享我对这个错误的经验:
我正在使用 fastlane + cocoapods。
我有一个包含 2 个动态框架的工作区:
- A.framework
- B.framework
依赖关系:
- A 取决于使用 cocoapods 的 AFNetworking
- B 取决于 A
依赖项在 Podfile 中定义。
执行框架 B 测试时出现错误。
在我的例子中,问题与 B.framework 目标中缺少对 AFNetworking 的依赖有关。
在 Podfile B.framework 中添加对 AFNetworking 的 pod 依赖,全部解决。
因此,即使目标 B 编译成功,AFNetworking 也没有嵌入到 B 测试应用程序中,模拟器无法 运行 B 测试应用程序引发此问题 "very meaningful" (*) 错误。
(*) 感谢 Apple!
哇,我在这上面浪费了很多时间,我的测试包为我的应用程序选择了 "Host Application"。其他测试包没有。
我预计这个解决方案可能不是适合所有情况的解决方案,但我的测试主要是为了测试动态库,它并不真的需要主机应用程序才能 运行。我遇到了上述错误,关闭它允许我 运行 测试而不会出现该错误并且断点有效。我使用的是 运行ning MacOS,但它可能对其他环境也有类似的作用。我希望这个解决方案可能不是适用于所有情况的正确解决方案,但我的测试主要是为了测试动态库,它并不真的需要主机应用程序才能 运行。
在测试包上转到常规 -> 测试 -> 将 "Host Application" 设置为 None。
在我的例子中,我没有为我使用 Carthage 集成的 Quick 和 Nimble 库添加 运行 脚本阶段。
对我来说,我必须在我的设备上 'Settings -> General' 下的 'Device Management' 中 'Trust' 开发人员。 (设置 -> 通用 -> 设备管理 -> DeveloperID -> 'Trust the app') 就像我一样 运行 使用我的苹果 ID 通过侧面加载应用程序。
在我的例子中,我不得不从我的 ui 测试目标中的 Other Linker Flags 中删除 $(inherited)
。我已经通过 cocoapods 安装了静态库。
我尝试了很多不同的选择,但 none 帮助了我,除了以下内容并且浪费了很多时间,发布这个以便真正帮助并节省时间:
按照完整手动配置的所有说明进行操作
https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md#full-manual-configuration
尖端
当你来到执行xcodebuild的部分,如果构建失败,并且日志提到“RoutingHTTPServer”或“YYCache”,在WebDriverAgentRunner目标的Build Phases选项卡上添加这两个框架
打开WebDriverAgent.xcodeproj
Select 'Targets' -> 'WebDriverAgentRunner'
打开 'Build Phases' -> 'Copy frameworks'
点击“+”-> 添加 RoutingHTTPServer
点击'+' -> 添加YYCache
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-382344697
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-383362376
build/test 也可能由于 WebDriverAgentRunner app/developer 在设备上不受信任而失败。请信任该应用并重试。
在尝试访问 WebDriverAgent 服务器状态时,如果它尝试连接端口 0,请在 appium-xcuitest-driver/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m
中硬编码端口 8100
原行:server.port = (UInt16)port;
新行:server.port = 8100;
https://github.com/facebook/WebDriverAgent/issues/661#issuecomment-338900334
如果您使用的是 CocoaPods 并且 UI 测试目标嵌入在应用程序目标中,则可能有另一种解决方案,不幸的是,默认模板 (pod init
) 就是这种情况。
尝试将 UI 测试目标移出应用目标 ,如下所示:
来自:
platform :ios, '11.0'
use_frameworks!
target 'MyApp' do
# Pods for MyApp
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
至:
platform :ios, '11.0'
use_frameworks!
# Pods shared between MyApp and MyAppUITests
target 'MyApp' do
# Pods for MyApp only
end
target 'MyAppUITests' do
# Pods for testing
end
本期主题归功于 SpacyRicochet:https://github.com/CocoaPods/CocoaPods/issues/4752#issuecomment-305101269
我遇到了同样的问题,并且已经尝试了这里提出的所有建议,但都没有成功。
运行 在不同模拟器上的测试为我解决了这个问题。之后原来的模拟器也没有再报错了。
对我来说问题是 Pod 文件
我创建了一个新目标,但忘记在 pod 文件中添加目标
target 'mobilesdkIntegrationTests' do
// write here any predefined pods if any, like
testing_pods
end
只需在 pod 文件中添加目标即可解决问题
Xcode10 附带了一些自动添加的项目设置,它们有时会出现,但并非总是如此。下载完成后Xcode10,重启电脑。这就是为我解决这个问题的原因。 None 这些答案为我修复了它。我希望这有帮助。我希望我能给出更好的答案。
从 Xcode 9.4.1 切换到 Xcode 10.1 解决了我的问题。
在我的例子中,我有一个带有默认空测试的完全干净的项目。
如果我添加了任何 pod,我会收到此错误。
解决方案是测试目标中至少有一个文件应该导入 Foundation
import XCTest
import Foundation
@testable import CVZebra
class CVZebraTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
在我创建 Cocoa Touch Framework 期间,每次 运行 测试的尝试都以与 OP 所写的相同错误消息结束。
我通过将 TEST 的构建配置从调试更改为发布来修复它。
步骤 1
步骤 2
步骤 3
注意: Runpath Search Paths
.
不需要额外配置
我在 ver 1.6.1 和 Xcode 10.1
中使用 Cocoapods
如果有人仍然遇到这个问题 this 回答对我有帮助。在项目设置中将 Always Embed Swift Standard Libraries 设置为 No。我是为 UI 测试目标做的。
就我而言,我的应用程序在模拟器中存在问题。在问题出现之前,我处理了一个失败的数据库迁移(领域)并破坏了我的数据库。因此,在我删除模拟器上的应用程序后,一切正常。
我已经开始使用 OCMock
为我已集成到我的项目工作区中的现有项目编写测试用例。完成此 link.
当我第一次执行我的测试用例时,它给出了上面的错误。我搜索了它并尝试了一些解决方案,例如 创建新目标 、 重新启动 Xcode,但它并没有帮助我。有什么想法吗?
愿意分享我的答案,希望能节省别人的时间。
对我来说,.m 文件在构建阶段 - > 编译源下没有正确链接
就我而言,链接文件没有任何问题。 模拟器有点卡在应用程序触发的消息上,例如:"App name would like to send you notifications"。 按确定,下次我的 XCTests 工作正常。
就我而言,我在头文件中将 属性 声明为只读:
// In .h file
@property (nonatomic, readonly) NSUInteger count;
但我忘记将此声明添加到 .m 中,因此会生成 setter:
// In .m file
@property (nonatomic, assign) NSUInteger count;
愚蠢的错误,不完全确定它为什么会出现在这个错误中,但是将该行添加到 .m 中解决了问题。
我在这里有 Cocoapods 和 Carthage 的笔记和演示应用程序 https://github.com/onmyway133/TestTarget
- 确保所有框架都链接到测试目标
- 配置
Runpath Search Paths
指向$(FRAMEWORK_SEARCH_PATHS)
更多信息
我正在使用 carthage,我遇到的问题是在测试目标中搜索依赖项。修正:
将 $(PROJECT_DIR)/Carthage/Build/iOS
添加到 Runpath Search Paths
您可以在这里找到参考资料:Carthage issue
在我的例子中,我的构建设置 -> 架构仅为 armv7 设置,我更改为 ARCHS_STANDARD,这与我的主机应用程序相同
在我的例子中,Build Active Architecture Only 被设置为 YES。
在项目和目标中: Build Settings -> Architectures -> Build Active Architecture Only 应该是 NO 而不是 YES
我的情况很特殊。我使用了 2 个文件作为测试 类。一个工作完美,另一个有那个错误。
link 都针对同一个框架。
解决方案
CLEAR DERIVED DATA
Window => Projects => Delete (at your project)
祝你好运 测试愉快!
我的解决方案是在我的测试目标中添加一个 "Copy File phase"。 在那里,我将目标设置为 Frameworks 并使用 + 号添加了我的框架。
只是为了分享我对这个错误的经验:
我正在使用 fastlane + cocoapods。
我有一个包含 2 个动态框架的工作区:
- A.framework
- B.framework
依赖关系:
- A 取决于使用 cocoapods 的 AFNetworking
- B 取决于 A
依赖项在 Podfile 中定义。
执行框架 B 测试时出现错误。
在我的例子中,问题与 B.framework 目标中缺少对 AFNetworking 的依赖有关。
在 Podfile B.framework 中添加对 AFNetworking 的 pod 依赖,全部解决。
因此,即使目标 B 编译成功,AFNetworking 也没有嵌入到 B 测试应用程序中,模拟器无法 运行 B 测试应用程序引发此问题 "very meaningful" (*) 错误。
(*) 感谢 Apple!
哇,我在这上面浪费了很多时间,我的测试包为我的应用程序选择了 "Host Application"。其他测试包没有。
我预计这个解决方案可能不是适合所有情况的解决方案,但我的测试主要是为了测试动态库,它并不真的需要主机应用程序才能 运行。我遇到了上述错误,关闭它允许我 运行 测试而不会出现该错误并且断点有效。我使用的是 运行ning MacOS,但它可能对其他环境也有类似的作用。我希望这个解决方案可能不是适用于所有情况的正确解决方案,但我的测试主要是为了测试动态库,它并不真的需要主机应用程序才能 运行。
在测试包上转到常规 -> 测试 -> 将 "Host Application" 设置为 None。
在我的例子中,我没有为我使用 Carthage 集成的 Quick 和 Nimble 库添加 运行 脚本阶段。
对我来说,我必须在我的设备上 'Settings -> General' 下的 'Device Management' 中 'Trust' 开发人员。 (设置 -> 通用 -> 设备管理 -> DeveloperID -> 'Trust the app') 就像我一样 运行 使用我的苹果 ID 通过侧面加载应用程序。
在我的例子中,我不得不从我的 ui 测试目标中的 Other Linker Flags 中删除 $(inherited)
。我已经通过 cocoapods 安装了静态库。
我尝试了很多不同的选择,但 none 帮助了我,除了以下内容并且浪费了很多时间,发布这个以便真正帮助并节省时间:
按照完整手动配置的所有说明进行操作
https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md#full-manual-configuration 尖端 当你来到执行xcodebuild的部分,如果构建失败,并且日志提到“RoutingHTTPServer”或“YYCache”,在WebDriverAgentRunner目标的Build Phases选项卡上添加这两个框架 打开WebDriverAgent.xcodeproj
Select 'Targets' -> 'WebDriverAgentRunner'
打开 'Build Phases' -> 'Copy frameworks'
点击“+”-> 添加 RoutingHTTPServer
点击'+' -> 添加YYCache https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-382344697 https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-383362376
build/test 也可能由于 WebDriverAgentRunner app/developer 在设备上不受信任而失败。请信任该应用并重试。
在尝试访问 WebDriverAgent 服务器状态时,如果它尝试连接端口 0,请在 appium-xcuitest-driver/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m
中硬编码端口 8100原行:server.port = (UInt16)port; 新行:server.port = 8100; https://github.com/facebook/WebDriverAgent/issues/661#issuecomment-338900334
如果您使用的是 CocoaPods 并且 UI 测试目标嵌入在应用程序目标中,则可能有另一种解决方案,不幸的是,默认模板 (pod init
) 就是这种情况。
尝试将 UI 测试目标移出应用目标 ,如下所示:
来自:
platform :ios, '11.0'
use_frameworks!
target 'MyApp' do
# Pods for MyApp
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
至:
platform :ios, '11.0'
use_frameworks!
# Pods shared between MyApp and MyAppUITests
target 'MyApp' do
# Pods for MyApp only
end
target 'MyAppUITests' do
# Pods for testing
end
本期主题归功于 SpacyRicochet:https://github.com/CocoaPods/CocoaPods/issues/4752#issuecomment-305101269
我遇到了同样的问题,并且已经尝试了这里提出的所有建议,但都没有成功。
运行 在不同模拟器上的测试为我解决了这个问题。之后原来的模拟器也没有再报错了。
对我来说问题是 Pod 文件
我创建了一个新目标,但忘记在 pod 文件中添加目标
target 'mobilesdkIntegrationTests' do
// write here any predefined pods if any, like
testing_pods
end
只需在 pod 文件中添加目标即可解决问题
Xcode10 附带了一些自动添加的项目设置,它们有时会出现,但并非总是如此。下载完成后Xcode10,重启电脑。这就是为我解决这个问题的原因。 None 这些答案为我修复了它。我希望这有帮助。我希望我能给出更好的答案。
从 Xcode 9.4.1 切换到 Xcode 10.1 解决了我的问题。
在我的例子中,我有一个带有默认空测试的完全干净的项目。 如果我添加了任何 pod,我会收到此错误。 解决方案是测试目标中至少有一个文件应该导入 Foundation
import XCTest
import Foundation
@testable import CVZebra
class CVZebraTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
在我创建 Cocoa Touch Framework 期间,每次 运行 测试的尝试都以与 OP 所写的相同错误消息结束。
我通过将 TEST 的构建配置从调试更改为发布来修复它。
步骤 1
步骤 2
步骤 3
注意: Runpath Search Paths
.
我在 ver 1.6.1 和 Xcode 10.1
中使用 Cocoapods如果有人仍然遇到这个问题 this 回答对我有帮助。在项目设置中将 Always Embed Swift Standard Libraries 设置为 No。我是为 UI 测试目标做的。
就我而言,我的应用程序在模拟器中存在问题。在问题出现之前,我处理了一个失败的数据库迁移(领域)并破坏了我的数据库。因此,在我删除模拟器上的应用程序后,一切正常。