我在为一个特定场景设置单元测试时遇到了问题。这是我的尝试:
在Xcode 4.5中,我创建了一个简单的OSX“命令行工具”应用程序项目(Foundation)。 请注意,Xcode不会自动为“命令行工具”项目提供添加单元测试的选项 - 因此请不要建议勾选复选框; 它不存在 :-/ 在我的项目中,我创建了一个微不足道的示例类,我想测试它; 例如“形状”。 我按照Apple的“Xcode Unit Testing Guide”中的说明进行操作,设置单元测试:(链接1): 我向项目添加了一个单元测试目标, 并编辑了“Test”方案以在新目标中运行测试。 在测试项目的实现(.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单元测试和目标配置。那么:
为了让测试目标与命令行工具的输出结果进行链接,我需要做什么?我可以从单元测试目标中链接到命令行可执行文件吗?苹果的文档似乎只适用于常规的OSX应用程序(*.app)和iOS应用程序,而这不属于此类。
我有业务逻辑类,我想在命令行工具环境中进行开发(起步阶段),所以我想了解如何在“命令行工具”类型的项目中运行单元测试目标。谢谢!
(附注:请注意,我不感兴趣从命令行运行我的单元测试——Stack Overflow已经提供了关于如何做到这一点的“类似”问题——而是在“命令行工具”类型的项目中运行单元测试,并且仍然在Xcode中运行。)