测试目标 X 遇到一个错误(早期意外退出,操作从未完成自举-将不会尝试重新启动

我已经开始使用 OCMock为已经集成到我的项目工作区中的现有项目编写测试用例。在遵循本 链接中提到的所有步骤之后。

当我第一次执行我的测试用例时,它给出了上面的错误。我搜索它,并试图遵循一些解决方案,如 创造新的目标重启 Xcode,但它没有帮助我。知道吗?

33378 次浏览

想分享我的答案,希望可以节省一些人的时间。

对于我来说. m 文件在构建阶段-> 编译源下没有正确链接

在我的例子中,链接文件没有任何问题。 这个模拟器被应用程序触发的信息卡住了,比如: “应用程序名称想要给你发送通知”。 按下 OK 键,下一次我的 XCT 测试工作正常。

在我的例子中,我在头文件中声明了一个只读属性:

// In .h file
@property (nonatomic, readonly) NSUInteger count;

但是我忘了将这个声明添加到.m 中,这样就会生成 setter:

// In .m file
@property (nonatomic, assign) NSUInteger count;

愚蠢的错误,不完全确定为什么它表现在这个错误,但添加该行到。我解决了这个问题。

我有我的笔记和演示两个 Cocoapods 和迦太基在这里 https://github.com/onmyway133/TestTarget应用程序

  • 确保所有框架都链接到 Test 目标
  • Runpath Search Paths配置为指向 $(FRAMEWORK_SEARCH_PATHS)

更多信息

我正在使用 carthage,我的问题是在测试目标中搜索依赖项:

$(PROJECT_DIR)/Carthage/Build/iOS添加到 Runpath Search Paths

你可在此找到参考资料: 迦太基问题

在我的例子中,我的构建设置-> 体系结构只是为 armv7设置,而我为 ARCHS _ STANDARD 更改了设置,这与我的主机应用程序相同

在我的案例中,Build Active Architecture Only 被设置为 YES。

项目和目标: 构建设置-> 架构-> 构建活动架构只应该是否而不是是

我的情况是特殊的。我使用2个文件作为测试类。一个工作完美,另一个有那个错误。
两者都是针对同一个框架进行链接的。

解决方案

清晰的导出数据

Window = > 项目 = > 删除(在您的项目中)

祝你好运 和愉快的测试!

我的解决方案是向测试目标添加“ CopyFile 阶段”。 在那里,我设置了目标框架,并添加了 + 符号我的框架。

分享一下我对这个错误的经验:

我用的是快车道 + 椰子树。

我有一个有两个动态框架的工作区:

  • 框架
  • B 框架

依赖性:

  • 依赖于使用 cocoapods 的 AFNetworking
  • 取决于 A

依赖性在 Podfile 是有定义的。

执行框架 B 测试时出现错误。

在我的案例中,问题与 B 框架目标中缺少对 AFNetworking 的依赖关系有关。

在 Podfile 的 b 框架中添加一个 pod 依赖到 AFnetwork,所有问题都得到了解决。

因此,即使目标 B 编译成功,AFNetworking 也没有嵌入到 B 测试应用程序中,模拟器也无法运行 B 测试应用程序,从而导致 “非常有意义”(*)错误。

(*)感谢苹果!

哇,我在这上面浪费了很多时间,我的测试包选择了应用程序的“主机应用程序”。其他测试包则没有。

我期望这个解决方案可能不是每种情况下的正确解决方案,但是我的测试主要是测试动态库,它并不真的需要一个 Host Application 来运行。我得到了上面的错误,关闭这个允许我运行测试而不会得到那个错误和断点工作。我运行的是 MacOS,但它可能在其他环境中也有类似的功能。我期望这个解决方案可能不是每种情况下的正确解决方案,但是我的测试主要是测试动态库,它并不真的需要一个 Host Application 来运行。

在测试包中,转到 General-> Testing- > Set“ Host Application”to Nothing。

在我的例子中,我没有为使用 Carthage 集成的 Quick 和 Nimble 库添加运行脚本阶段。

对我来说,我必须“信任”开发人员在“设置-> 一般”下的“设备管理”在我的设备。当我使用我的苹果 ID 运行应用程序通过侧面加载。

在我的例子中,我必须在 ui 测试目标中从 其他连接器标志中删除 $(inherited)。我已经通过 cocoapods 安装了静态库。

我尝试了很多不同的选择,但没有一个对我有帮助,除了下面这个,浪费了很多时间,发布这个真的很有帮助,节省了时间:

按照完全手动配置的所有说明进行操作

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

选择「目标」-> 「 WebDriverAgentRunner 」

打开“构建阶段”-> “复制框架”

点击“ +”-> 添加 RoutingHTTPServer

点击“ +”-> 添加 YYCache Https://github.com/facebook/webdriveragent/issues/902#issuecomment-382344697 Https://github.com/facebook/webdriveragent/issues/902#issuecomment-383362376

由于 WebDriverAgentRunner 应用程序/开发人员在设备上不受信任,构建/测试也可能失败。请相信这个应用程序,然后再试一次。

在尝试访问 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 测试目标嵌入在 app 目标中,那么可能还有另一种解决方案,不幸的是,在缺省模板(pod init)中就是这种情况。

尝试将 UI 测试目标移出 app target ,如下所示:

来自:

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

我也有同样的问题,已经尝试了所有在这里提出的建议,但没有任何成功。

在另一个模拟器上运行测试为我解决了这个问题。此后,原来的模拟器也不再造成故障。

对我来说,问题在于花苞的文件
我创建了一个新目标,但是忘了在豆荚文件中添加目标

target 'mobilesdkIntegrationTests' do
// write here any predefined pods if any, like
testing_pods
end

只要在吊舱文件中添加目标就可以解决这个问题

Xcode 10自动添加了一些项目设置,它们只是偶尔出现,并非总是如此。下载 Xcode 10后,重新启动计算机。所以我才能解决这个问题。这些答案都没能改变我的想法。希望这个能帮上忙。我希望我能给出一个更好的答案。

在我的例子中,从 Xcode 9.4.1切换到 Xcode 10.1解决了这个问题。

在我的例子中,我使用默认的空测试来完全清理项目。 如果我已经添加了任何吊舱,我收到这个错误。 解决方案是 Test 目标中至少有一个文件应导入 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 的构建配置从调试更改为发布来修复它。

第一步

enter image description here

第二步

enter image description here

第三步

enter image description here

注意 : 不需要任何额外的 Runpath Search Paths配置。

我在 v1.6.1和 Xcode 10.1中使用 Cocoapods

如果有人还经历这个问题 这个的答案帮助了我。在项目设置中将 始终嵌入 Swift 标准库设置为 没有。我这样做是为了 UI 测试目标。

在我的案例中,我的应用程序在模拟器中出现了一个问题。在问题出现之前,我处理了一个 db 迁移(domain) ,它失败并销毁了我的 db。所以在我删除了模拟器上的应用程序之后,一切都很顺利。