如何使用 Xcode 5 从命令行运行 xctest?

Posted

技术标签:

【中文标题】如何使用 Xcode 5 从命令行运行 xctest?【英文标题】:How do I run xctest from the command-line with Xcode 5? 【发布时间】:2013-11-28 02:48:15 【问题描述】:

我发现了一个名为“xctest”的命令行工具,它显然可以在您的项目中运行单元测试。该可执行文件位于此处:

/Applications/Xcode.app/Contents/Developer/usr/bin/xctest

当我尝试在我的 xctest 包上运行这个可执行文件时,我正在使用:

$ ./xctest /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest

但是,我得到以下输出:

Test Suite '(null)' started at 2013-11-14 21:16:45 +0000
Test Suite '(null)' finished at 2013-11-14 21:16:45 +0000.
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds

据我所知,没有 xctest 的手册页,但在命令行中仅输入 ./xctest 会产生:

Usage: xctest [--test Self | All | None | <TestCaseClassName/testMethodName>] <path of unit to be tested>

特别是,我希望能够只测试测试类中的特定方法,这就是我想使用这个 xctest 命令的原因。

我确实看到有一种方法可以从命令行运行所有测试,例如:

$ xcodebuild test -scheme MyApp

这会运行所有单元测试并正常工作(我看到了我的单元测试结果,与使用 xctest 时不同)。但我对能够从命令行运行单个测试方法感兴趣,例如:

$ ./xctest --test MyAppTests/testExample  /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest

【问题讨论】:

【参考方案1】:

尽管用法消息说 -XCTest 是您需要的参数:

xctest -XCTest MyAppTests/testExample testbundle.xctest

要直接调用 xctest 工作,您可能还需要将 DYLD_FRAMEWORK_PATHDYLD_LIBRARY_PATH 设置为您构建的产品目录。通常,您需要使用与 Xcode 相同的参数和环境,您可以通过在其中一个测试中放置一个断点,通过 Xcode 运行它们,然后打印出 argumentsenvironment 的值来查看这一点@。

为避免弄乱所有这些注释,您还可以在 Xcode 中修改方案以仅运行特定测试。在 Product > Scheme > Edit Scheme 下选择 Test 操作并展开测试包。您可以使用复选框选择要运行的测试,然后 xcodebuild 的测试操作将只运行这些测试。

【讨论】:

谢谢!我实际上不需要为 DYLD_FRAMEWORK_PATH 和 DYLD_LIBRARY_PATH 设置环境变量。我需要确保我在 Build/Products/Testing 中拥有正确的 xctest 包位置,而不是 Build/Products/Debug。所以我的路径是:./xctest -XCTest MyTestClass/testMyTestFunction /Users/username/Library/Developer/Xcode/DerivedData/MyApp-abcdefghikjklmn/Build/Products/Testing/MyAppTests.xctest 感谢您提供有关在方案中禁用测试的提示。您可以选择多行并使用空格键来切换选择——非常有用!

以上是关于如何使用 Xcode 5 从命令行运行 xctest?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 命令行工具 (XCode 4.6) 从终端运行单元测试

使用 swift 2.3 从 xcode 8 中的命令行运行 xcode ui 测试

由于 otest 错误,无法从命令行运行 Xcode 单元测试

LLDB 在项目运行时使 Xcode 5.1 崩溃

如何安装Xcode命令行工具

使用 xcodebuild 从命令行构建 Cocoa 应用程序后,如何运行它?