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

标签 xcode unit-testing xctest

我发现了一个名为“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

最佳答案

尽管使用消息显示 -XCTest 是您需要的参数:

xctest -XCTest MyAppTests/testExample testbundle.xctest

要直接调用 xctest,您可能还需要设置 DYLD_FRAMEWORK_PATHDYLD_LIBRARY_PATH到您的构建产品目录。一般来说,您需要使用与 Xcode 相同的参数和环境,您可以通过在其中一个测试中放置断点,通过 Xcode 运行它们,然后打印 arguments 的值来看到这一点。和environment对于 [NSProcessInfo processInfo] .

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

关于xcode - 如何使用 Xcode 5 从命令行运行 xctest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988723/

相关文章:

iPhone 无法创建 CGBitmapContext

swift - 无法在 Swift 中从 XCTest 打开 NSStream

xcode - 无法找到 `Firebase 的规范

ios - 使用 Quincy Kit 符号化崩溃日志,给我这个错误

javascript - 需要模型的 Ember 测试初始化​​器

javascript - 监视没有对象的函数

javascript - 如何使用 Jest 模拟 DynamoDBDocumentClient 构造函数(AWS 开发工具包 V3)

swift - 您如何在共享框架中为 XCTest 创建公共(public)扩展?

ios - 在 iOS 应用程序测试期间,如何访问主机应用程序中的单例实例?

iOS:LLDB 多行断点命令无法按预期工作