【问题标题】:How could I launch non-hosted test in Xcode 7.3?如何在 Xcode 7.3 中启动非托管测试?
【发布时间】:2016-08-15 04:39:57
【问题描述】:

我有单元测试(不是 UI 测试),并且不希望在测试的同时启动应用程序本身。我读到了所谓的非托管测试,这听起来很合适。但是,尝试在 Xcode 7.3 上启动非托管测试时,我遇到了一个严重的问题 - 它抱怨链接器无法找到正在测试的应用程序中的类。

我已阅读并尝试过的内容:

App delegate substitution based on launch arguments - 不受欢迎,因为它迫使我的应用程序了解测试(紧密耦合、损坏的封装等......)并且实际上启动我的应用程序以及测试(即使什么都不做)

XCode 5 unit testing: starts my app - 在这里尝试了所有答案,除了changing classes target membership 之外,它们都不起作用,这显然不是一个好选择,因为手动更改目标成员容易出错,并且随着项目的增长变得困难

Apple's outdated guide - 不

Xcode test target with host application forces wrong target into build section of scheme - 不

https://stackoverflow.com/a/22024428/2305175 - 不

手动创建单元测试目标,将Target to be tested 显式设置为无 - 不

如何在不更改类目标成员资格、应用代理替换和其他可疑技术的情况下运行非托管测试???

【问题讨论】:

    标签: ios xcode unit-testing xcode7 xcode7.3


    【解决方案1】:

    您可以通过将 xctoolxCode 7

    一起使用来实现此目的
    1. 首先转到您的测试目标设置。
    2. 转到常规选项卡
    3. 选择无作为主机应用程序
    4. 然后从终端安装 xctool
    5. 如下从终端运行测试,

      xctool -workspace test.xcworkspace -scheme testScheme run-tests -sdk iphonesimulator

    【讨论】:

    • 不幸的是,不起作用。顺便说一句,如果它 xctool 使用与 xcode 相同的工具(如果我理解正确的话)会怎么样?
    • 哪部分不起作用?您是否使用 xctool 构建项目并首先运行它?是否构建失败?还是运行。 xctool 是 xcodebuild 的替代品。请更具体。
    • 是的,我尝试使用 xctool 构建但没有成功。我的问题中说明了错误-“链接器找不到正在测试的应用程序中的类”。更具体地说,“体系结构 i386 的未定义符号:(从测试类引用的主要目标类中的函数的长列表)”编译器看到我的测试类(即 SomeClassTest:XCTestCase),但不是应用程序中的类(SomeClass 正在测试和定位在主要目标)。我的主要目标 (SomApp) 编译成功,但没有测试 (SomAppTests)。
    • xCode 是正确的,要以非托管方式运行测试,您必须从单元测试中引用/测试您的应用程序类。您也可以尝试这篇文章中的解决方案,stackoverflow.com/questions/19219706/…。您也可以在没有主应用程序的情况下尝试使用小型 POC。
    • stackoverflow.com/questions/19219706/… 不是一个好的选择,我在我的问题中说了为什么。 POC 是什么意思?
    猜你喜欢
    • 2018-10-29
    • 2015-09-05
    • 2016-08-31
    • 2016-08-18
    • 2017-02-28
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多