如何在Xcode 7.3中启动非托管测试?

3
我有单元测试(非UI测试),启动应用程序本身以及测试是不可取的。我了解到所谓的非托管测试,这听起来很合适。然而,在尝试在Xcode 7.3上启动非托管测试时,我遇到了一个严重的问题——它抱怨无法通过链接器找到正在测试的应用程序中的类。
我已经阅读并尝试过: 基于启动参数的应用代理替换 - 不可取,因为它强制使我的应用程序知道测试(紧密耦合,破坏封装等...)并实际上与测试一起启动我的应用程序(即使什么也没有做) XCode 5单元测试:启动我的应用程序 - 尝试了这里的每个答案,它们都不起作用,除了更改类的目标成员资格,显然这不是一个好的选择,因为手动更改目标成员资格容易出错,并且在项目增长时变得困难。

苹果过时的指南 - 不行

Xcode测试目标与宿主应用程序强制将错误的目标放入方案的构建部分 - 不行

https://dev59.com/W2Eh5IYBdhLWcg3w321G#22024428 - 不行

手动创建单元测试目标,明确将要测试的目标设置为无 - 不行

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

1个回答

0

您可以使用xctoolxCode 7来实现此目的。

  1. 首先进入测试目标设置。
  2. 进入常规选项卡
  3. 选择“无”作为主机应用程序
  4. 然后从终端安装xctool
  5. 按以下方式从终端运行测试,

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


1
很遗憾,它不起作用。顺便问一下,如果我理解正确的话,如果xctool使用与Xcode相同的工具,那会怎样呢? - Fyodor Volchyok
哪一部分不起作用?你是否使用xctool构建项目并首先运行它?是构建失败了吗?还是运行出错了?xctool是xcodebuild的替代品。请更具体地描述问题。 - rustylepord
是的,我尝试使用xctool构建,但没有成功。我遇到了我的问题中所述的错误 -“测试中使用的应用程序类无法被链接器找到”。更具体地说,“未定义的符号架构i386:(从测试类引用的主目标类中的长列表函数)”编译器看到我的测试类(即SomeClassTest:XCTestCase),但不是应用程序中的类(SomeClass正在进行测试并位于主目标中)。我的主目标(SomApp)成功编译,但测试(SomAppTests)没有成功。 - Fyodor Volchyok
xCode是正确的,要以非托管方式运行测试,您必须将应用程序类与您从单元测试中引用/测试的类链接起来。您也可以尝试此帖子中的解决方案,https://dev59.com/hGIk5IYBdhLWcg3wfOSf?lq=1。在不使用主应用程序之前,您可以尝试使用小型POC。 - rustylepord
https://dev59.com/hGIk5IYBdhLWcg3wfOSf?lq=1 不是一个好的选择,我在我的问题中已经解释了原因。而且你所说的POC是什么意思? - Fyodor Volchyok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接