25

查看 XCTest 和 Xcode 5 单元测试,却没有看到如何在 Xcode 5 中的 Instruments 下运行我的单元测试...

具体来说,我想在测试期间寻找泄漏(在这种情况下,这不必自动化,但显然这很有用)。

可能的?

4

5 回答 5

62

在 Xcode 中,在测试导航器中右键单击您的测试并选择“Profile "TestName"”:

仪器配置文件单元测试内存

于 2016-01-30T07:00:58.160 回答
25

我认为这是最简单的方法:

  1. 在测试中的某处设置断点(我一直在 setup 方法中这样做)
  2. 在仪器中打开一个新文档
  3. 运行应用程序并确保它在断点处停止
  4. 从 Instruments 的 Target 下拉菜单中选择 Attach to Process 并向下滚动到您的流程
  5. 单击记录,然后在 XCode 中恢复
于 2014-01-14T17:45:30.680 回答
10

这是在 Xcode 6 下的正确方法:

1) 在您的 Xcode 项目中,显示“Products”文件夹,选择“.xctest”产品,右键单击,最后在上下文菜单中选择“Reveal in Finder”。

2) 启动 Instruments 并使用您选择的模板创建一个新文档。

3)对文档执行“选择目标...”

4) 导航并选择 Xcode 用于运行测试的工具/Applications/Xcode.app/Contents/Developer/usr/bin/xctest(您可以xcrun -f xctest在终端中找到此位置) - 您需要启用“遍历包”才能在 Xcode 应用程序中导航。

5) 将步骤 1 中显示的“.xctest”产品从 Finder 拖放到“参数”字段中 - 这将输入其绝对路径。

6) 点击“选择”。

您现在已准备好从 Instruments 运行单元测试!

在此处输入图像描述

于 2015-01-14T06:23:46.090 回答
4

我基于我正在测试的 mac app 目标创建了一个新目标,然后将 xctest 类添加到要编译的文件中。

然后,我将/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework添加到要链接的框架中。

然后将其路径$(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/Library/Frameworks 添加Runpath Search Paths

然后在 main.m 我添加了以下内容:

    XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"];
    [suite addTest:[VideohogCachingTest testCaseWithSelector:@selector(testCompleteSequentialText)]];
    [suite run];

这在我需要作为普通应用程序运行的类VideohogCachingTest上运行测试testCompleteSequentialText,因此允许我通过 command+R 或在本例中使用 command+I 进行分析来运行测试。然后我可以抓住一个僵尸并追踪问题,这对我来说以前是不可能的。如果您想运行所有测试,您可以执行以下操作:

XCTestSuite *suite = [XCTestSuite defaultTestSuite];
[suite run];
于 2014-07-30T08:12:38.423 回答
0

Profile提示Instruments喜欢Activity Monitor, Allocations, Time Profiler...

有几个注意事项:

应用

  • 活动监视器仅适用于真实设备

单元测试包

  • 仅适用于模拟器
  • 活动监视器不可用

UI 测试包

  • 分析不可用
于 2020-11-14T21:46:46.523 回答