测试目标X遇到错误(早期意外退出,操作从未完成引导 - 不会尝试重启

时间:2016-01-25 10:23:36

标签: ios xcode7 ocmock

我已经开始与OCMock合作为我已经集成到项目工作区的现有项目编写测试用例。完成此link

中提到的所有步骤后

当我第一次执行我的测试用例时,它给了我这个错误。我搜索了它并尝试了一些解决方案,例如"创建新目标","重启Xcode"但它并没有帮助我。有什么想法吗?

24 个答案:

答案 0 :(得分:115)

我在这里有Cocoapods和Carthage的笔记和演示应用https://github.com/onmyway133/TestTarget

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

更多信息

答案 1 :(得分:17)

我使用carthage并且问题在于我在测试目标中搜索依赖项。修正:

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

您可以在此处找到参考:Carthage issue

答案 2 :(得分:11)

如果您使用的是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

答案 3 :(得分:5)

在我的情况下,链接文件没有任何问题。 模拟器有点卡在应用程序触发的消息上,例如:“应用程序名称希望向您发送通知”。 按下OK,下次我的XCTests工作正常。

答案 4 :(得分:4)

只是为了分享我对此错误的体验:

我正在使用fastlane + cocoapods。

我有一个包含2个动态框架的工作区:

  • A.framework
  • B.framework

依赖关系:

  • A取决于AFNetworking使用cocoapods
  • B取决于A

依赖关系在Podfile中定义。

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

在我的情况下,问题与在B.framework目标中缺少对AFNetworking的依赖性有关。

在Podfile中的B.framework中向AFNetworking添加pod依赖关系,所有这些都已解决。

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

(*)感谢Apple的支持!

答案 5 :(得分:4)

我的解决方案是添加一个"复制文件阶段"到我的测试目标。 在那里,我将目标设置为框架,并使用+符号添加我的框架。

答案 6 :(得分:2)

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

在项目和目标中: 构建设置 - >架构 - >构建活动架构只应为NO而不是YES

答案 7 :(得分:2)

我的案子很特别。我使用了2个文件作为测试类。一个工作完美,另一个有错误。
两者都链接到相同的框架。

解决方案

  

清除数据

     

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

祝你好运 和快乐的测试!

答案 8 :(得分:2)

哇,我浪费了很多时间,我的测试包中有#34; Host Application"我选择的应用程序。其他测试包没有。

我希望这个解决方案对于每种情况都不是正确的解决方案,但我的测试主要是测试动态库,它并不需要运行Host Application。我得到了上述错误,关闭这个允许我运行测试而不会出现错误并且断点有效。我在运行MacOS,但它可能与其他环境类似。我希望这个解决方案可能不是适用于所有情况的正确解决方案,但我的测试主要是测试动态库,它并不需要运行Host Application。

在测试包上转到常规 - >测试 - >设置"主机应用"没有。

答案 9 :(得分:2)

就我而言,我没有为使用Carthage集成的Quick和Nimble库添加Run Script阶段。

答案 10 :(得分:2)

我遇到了同样的问题,已经尝试了此处提出的所有建议,但均未成功。

在其他模拟器上运行测试对我来说解决了这个问题。之后,原来的模拟器也不再导致失败。

答案 11 :(得分:1)

在创建Cocoa Touch Framework的过程中,每次运行测试的尝试都以与OP相同的错误消息结束。

我通过将TEST的构建配置从“调试”更改为“发布”来修复它。

第1步

enter image description here

第2步

enter image description here

第3步

enter image description here

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

我正在1.6.1和Xcode 10.1中使用Cocoapods

答案 12 :(得分:1)

I tried many different options but none helped me except below and wasted lot of time, posting this so that really help and save time on this: 

Follow all of the instructions for Full Manual Configuration

https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md#full-manual-configuration
Tips
When you come to the part where you are executing xcodebuild, if the build fails, and the log mentions "RoutingHTTPServer" or "YYCache", add these two frameworks on the Build Phases tab of the WebDriverAgentRunner target
Open the WebDriverAgent.xcodeproj

Select 'Targets' -> 'WebDriverAgentRunner'

Open 'Build Phases' -> 'Copy frameworks'

Click '+' -> add RoutingHTTPServer

Click '+' -> add YYCache
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-382344697
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-383362376

The build/test may also fail due to the WebDriverAgentRunner app/developer being untrusted on the device. Please trust the app and try again.

While trying to access the WebDriverAgent server status, if it tries to connect on port 0, hardcode port 8100 in appium-xcuitest-driver/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m

Original line: server.port = (UInt16)port;
New line: server.port = 8100;
https://github.com/facebook/WebDriverAgent/issues/661#issuecomment-338900334

答案 13 :(得分:0)

如果仍然有人遇到此问题,this的答案对我有所帮助。在项目设置中将始终嵌入Swift标准库设置为 No 。我这样做是为了UI测试目标。

答案 14 :(得分:0)

就我而言,模拟器中的我的应用存在问题。在问题出现之前,我处理了一个数据库迁移(领域),该迁移失败并破坏了我的数据库。所以在我删除模拟器上的应用程序后,一切对我来说都很好。

答案 15 :(得分:0)

在我的情况下,我的项目完全干净,默认为空测试。 如果我添加了任何Pod,则会收到此错误。 解决方案是,测试目标中至少应导入一个文件

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.
        }
    }

}

答案 16 :(得分:0)

想分享我的答案,希望能节省时间。

对于我来说.m文件在Build Phases下没有正确链接 - >编译来源

答案 17 :(得分:0)

从Xcode 9.4.1切换到Xcode 10.1解决了我的问题。

答案 18 :(得分:0)

Xcode 10附带了一些自动添加的项目设置,这些设置有时会出现,而不是有时会出现。下载Xcode 10后,重新启动计算机。这就是解决这个问题的原因。这些答案都没有为我解决。我希望这有帮助。我希望我能给出更好的答案。

答案 19 :(得分:0)

对我来说,问题是Pod文件
我做了一个新的目标,但是忘了在Pod文件中添加目标

MDSYS.SDO_GEOMETRY(2003, 2400000, null, 
MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 11, 2003, 1), 
MDSYS.SDO_ORDINATE_ARRAY(
8432760.2844442501664161682128906250, 4547222.211324909701943397521972656250, 
8432767.404376400634646415710449218750, 4547207.649308839812874794006347656250, 
8432787.325771750882267951965332031250, 4547207.513505320064723491668701171875, 
8432781.009173119440674781799316406250, 4547223.739645609632134437561035156250, 
8432760.2844442501664161682128906250, 4547222.211324909701943397521972656250, 
8432777.8091080002486705780029296875, 4547210.60657539963722229003906250, 
8432768.0091079995036125183105468750, 4547215.702575399540364742279052734375, 
8432777.9211079999804496765136718750, 4547219.79057539999485015869140625, 
8432777.8091080002486705780029296875, 4547210.60657539963722229003906250))

只需在pod文件中添加目标即可解决问题

答案 20 :(得分:0)

在我的情况下,我必须从我的ui测试目标中的 Other Linker Flags 中删除$(inherited)。我已经通过cocoapods安装了静态库。

答案 21 :(得分:0)

对我来说,我必须“信任”。设备管理中的开发人员&#39;在&#39;设置 - &gt;下一般&#39;在我的设备上。 (设置 - &gt;常规 - &gt;设备管理 - &gt;开发者ID - &gt;&#39;信任应用程序&#39;)因为我使用我的苹果ID通过侧面加载运行应用程序。< / p>

答案 22 :(得分:0)

就我而言,我的构建设置 - &gt;架构只为armv7设置,我改为ARCHS_STANDARD,这与我的主机应用程序相同

答案 23 :(得分:0)

In my case, I had declared a property as readonly in a header file:

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

but I forgot to add this declaration to the .m so a setter would be generated:

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

Silly mistake, not totally sure why it manifested in this error, but adding that line to the .m fixed the problem.