我是不是需要在需要时手动将每个 *.m 文件添加到我的单元测试目标?

Posted

技术标签:

【中文标题】我是不是需要在需要时手动将每个 *.m 文件添加到我的单元测试目标?【英文标题】:do I need to manually add each *.m file to my unit test target when it's needed?我是否需要在需要时手动将每个 *.m 文件添加到我的单元测试目标? 【发布时间】:2011-04-27 23:11:40 【问题描述】:

我在 XCode 4 中使用单元测试。我一直在将我的应用程序 *.m 文件添加到单元测试目标“编译源”中,因为我引用它们,以便单元测试将构建/运行。

这里有更好的方法吗?

注意 - 我刚刚尝试将应用程序添加到单元测试目标“目标依赖项”,但这似乎不起作用(仍然出现一些构建错误)。

【问题讨论】:

【参考方案1】:

在 Xcode 4 之前,您描述的方法是必要的:应用程序测试目标本质上必须是您的实际应用程序的副本,加上测试。

但是使用 Xcode 4,我们不再需要在模拟器中进行测试。相反,使用作为单元测试包的目标,并将您的测试添加到包中。在测试期间,应用程序被启动,测试包将被注入并与应用程序链接,所有这些都在运行时进行。

听起来您尝试过这种方法,让我们讨论一下您遇到的实际错误。

【讨论】:

嗨乔恩 - 也许我运行测试的方式错误 - 我一直在做的是将配置文件更改为 UnitTests,然后点击 Command-U(测试)。在这种情况下,我的单元测试目标似乎需要支持文件。这是你对我的问题的理解吗? 要了解它是如何以更集成的方式完成的,请创建一个全新的项目。请务必选择“包括单元测试”。您将获得一个包含两个目标的单一方案:主要目标和测试目标。研究测试目标的构建设置。还要研究方案设置。 由于检查所有构建设置还有很长的路要走,我只想说我只需要在“链接”=> BundleLoader 和“单元测试”=> 测试中更改/添加东西主机,让它工作。希望这可以帮助某人不必检查那里的每个设置。 PS:我认为这应该是公认的答案! 确实一切都可以正确构建和运行,但是当您这样做时,自动完成功能不起作用。你如何解决这个问题? 如果您的自动更正不起作用,还是有问题。【参考方案2】:

是的,您需要将所需的每个 .m 文件添加到单元测试目标中。

这会将它们包含在目标编译和链接阶段。

【讨论】:

不再需要;看我的回答。【参考方案3】:

如果 testTarget 是在 Obj-C 项目中基于 om SWIFT 语言创建的

制作 testTrget 的方案就足够了,但是这样: 产品 -> 方案 -> 编辑方案 -> 构建选项卡: 只检查了测试而已。

重要提示: 您不应将每个 .m 文件包含到测试目标中 只是将标题添加到 testTarget-Bridging-Header.h

注意:如果您将在方案中检查更多内容或将 .m 文件包含到 testTarget 中,您可能会遇到标题冲突

【讨论】:

以上是关于我是不是需要在需要时手动将每个 *.m 文件添加到我的单元测试目标?的主要内容,如果未能解决你的问题,请参考以下文章

如何自动将设备添加到配置文件?

我应该如何将多个图像添加到视图中?

在故事板中添加新的视图控制器后是不是需要手动添加 ViewController.swift 文件?

游戏框架中的类路径问题

将模块添加到组件,但不是组件的每个页面

Angular:如何手动将打字文件添加到打字稿