【发布时间】:2012-11-02 15:18:39
【问题描述】:
无法为特定场景设置单元测试。这是我正在尝试的:
在 Xcode 4.5 中,我创建了一个简单的 OSX “命令行工具” 应用程序项目(基础)。
请注意,Xcode不提供自动将单元测试添加到“命令行工具”项目的选项——所以请不要建议勾选勾选框;它不存在:-/在我的项目中,我创建了一个我想测试的简单示例类;例如“形状”。
-
我按照 Apple 的 Xcode 单元测试指南 中针对 Setting Up Unit-Testing in a Project 的说明进行操作:
我在我的项目中添加了一个单元测试目标,并且
我编辑了“测试”方案以在新目标中运行测试。
-
在测试项目的实现 (.m) 文件中,我添加了
Shape.h的导入和setUp()方法中的代码以实例化形状并将其分配给实例变量。
那时,我决定看看事情是否会构建以及默认测试是否会继续运行。但是,当我从菜单中选择 Product...Test 时,构建失败并出现以下错误:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Shape", referenced from:
objc-class-ref in ExampleTests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解释这个错误不是问题。我认为单元测试目标没有链接到包含 Shape 实现的二进制文件。但是,我(还)不了解 Xcode 单元测试和目标配置。所以:
为了让测试目标链接到命令行工具的结果输出,我需要做什么?我可以从单元测试目标链接到命令行可执行文件吗? Apple 的文档看起来特定于常规 OSX 应用程序 (*.app) 和 iOS 应用程序,而这两者都不是。
我有想要在命令行工具设置中开发的业务逻辑类(首先),所以我想了解我需要做什么才能让单元测试目标在“命令行工具”类型的项目。 谢谢!
(p.s. 请注意,我不对在命令行运行我的单元测试从感兴趣 - Stack Overflow 已经提出了关于如何做到这一点的“类似”问题 -而是在“命令行工具”类型项目上运行单元测试,并且仍然在 Xcode 中。)
【问题讨论】:
标签: xcode unit-testing linker-errors xcode4.5 command-line-tool