编写Mac OS命令行工具的XCTestCase

15

我正在尝试单元测试一个针对Mac OS编写的命令行工具。

当我第一次创建项目时,XCode在项目导航器中没有生成测试组。当我尝试添加新的测试目标时,它不会让我指定我的目标为“要测试的目标”。

我的问题是:是否可能为命令行工具项目使用XCTest?或者仅仅因为我可以从命令行运行它而被认为是微不足道的?我可以理解这种推理,但我真的很想测试内部功能。

3个回答

14

我不确定您正在使用哪个版本的Xcode,但我在使用Xcode版本6.2(6C131e)中的模板时遇到了类似的问题。 话虽如此,我能够通过命令行工具项目使XCTests正常工作。 解决方案是在创建过程中忽略“要测试的目标”字段,而是在创建后将测试目标添加到主方案中:

  1. 进入管理方案。 您应该会看到您的主目标方案和新创建的测试方案。
  2. 选择您的主方案并进行编辑。
  3. 选择测试操作,并在测试操作详细信息面板中使用“+”将您的新测试目标添加到测试列表中。

从那里,您就可以使用cmd-U运行测试。


5
我还需要手动将测试目标成员添加到所有我希望测试的代码文件中。 - Jeffrey Fulton
2
@JeffreyFulton的评论是让这个答案起作用的关键。我会考虑将其添加到答案中,然后将其标记为正确的解决方案。 - horseshoe7

6
在Xcode 8.2中,我只能通过从“测试导航器”添加单元测试目标,然后编辑测试方案以在“测试”列表下包含该新测试目标,并从“文件检查器”窗格的“目标成员资格”部分手动添加可测试源文件来运行命令行应用程序中的单元测试。
(即使在构建阶段添加了XCTest框架,“从项目“添加目标”屏幕添加单元测试目标也无法正确链接。)
按照Apple文档指南从“测试导航器”窗格添加单元测试目标看起来像这样:

Xcode navigator pane open to Test Navigator section, after having clicked the 'add new test target or class' button

注意:

  • 在单元测试目标设置中,“要测试的目标”下拉菜单仍无法选择命令行工具。将此选项保留为“无”。

0

为Mac OS命令行项目(包含main.swift和其他swift文件)添加单元测试目标(XCTest),以使其工作,需要执行以下步骤:

  1. 通过编辑管理方案将UnitTests目标添加到方案中
  2. 确保您的函数和类具有PUBLIC访问权限

这解决了我的链接错误。希望对你们也有所帮助。


如果你所说的“public”是指将源文件添加到测试目标中,那么答案是否定的,它仍将无法找到源代码。 - bauerMusic

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