为什么不在Xcode中编译测试?

时间:2014-12-15 22:12:08

标签: ios xcode unit-testing

我尝试将单元测试添加到Xcode中的(非常长的)现有项目中。我创建了一个测试目标(正常的app-target在“目标依赖项”中)并且自动创建的测试运行没有问题。然后我试着对我的一个(不那么复杂的)模型类进行一些真正的测试。我将这个添加到“编译源”构建阶段,但是获得了几个编译器错误。其中一些可以通过导入和编译我的项目的其他类来解决,但是其他 - 这真的很烦人 - 我只能通过向现有项目类添加像<UIKit/UIKit.h>这样的导入语句来解决这个问题。没有这些陈述(仍然在普通的app-target中)。所以我的主要问题是:

从一个非常古老的项目开始进行单元测试的最佳做法是什么?

但我也想知道:

如果我想让它运行,我是否真的必须将所有250个类添加到“编译源”并将app = target的每个库添加到测试目标中?如果是这样,是否可以快速复制应用目标的这些部分?

我在互联网上搜索了很多,但没有教程或手册似乎解决了我的问题。

我正在使用Xcode 6。

2 个答案:

答案 0 :(得分:1)

我终于完成了一切。 如果您遇到同样的问题,只需按照this post中的步骤操作即可。它已经很老了,是为Xcode 4编写的,但它仍然是正确的方法。

其实我在之前读过它我问过这个问题,但不幸的是后我自己尝试了一些东西。我的错是试图通过将应用程序类添加到我的测试目标的构建阶段的&#34;编译源&#34;部分来修复链接器错误,这会导致新的错误,我尝试通过在构建阶段添加更多应用程序源并将库链接到测试二进制文件来解决这个问题,这一切都让事情变得更糟。所以:

  • 只需将测试类添加到&#34;编译源&#34;构建测试目标的阶段。请勿在此处添加任何应用来源。
  • 不要链接测试目标中已经链接到应用目标的任何二进制文件。
  • 请务必在应用目标的构建设置中将&#34;默认隐藏的符号&#34; -entry设置为&#34;否&#34;。

答案 1 :(得分:0)

您可以使用以下方法将单元测试包添加到现有项目中:

Unit Test Bundle

在我看来,如果你想为独立类编写单元测试,那么将该类添加到Compile Source是一种更好的方法。

但是如果你的类导入了其他类,并且它是否像链一样,那么添加整个源代码是避免编译错误的更好,更简单的方法。