30

我正在尝试使用 Xcode 7 将 UI 测试添加到我现有的项目中。但是 UI 测试录制按钮始终是灰色的。我在这里缺少什么?

我尝试重新启动 Xcode,清理和重建项目并添加新的 UI 测试目标。有没有其他人经历过同样的行为?

4

16 回答 16

40

要启用红色按钮,您必须将光标放在测试方法上:

在此处输入图像描述

于 2017-11-20T19:15:25.800 回答
16

我也被困了一段时间。为了记录,您必须在 Xcode 识别为包含测试的类中。将文件添加到您的 UI 测试目标中,例如:

import Foundation
import XCTest

class MyTests: XCTestCase {
    func testSomething() {

    }
}

保存文件,清理您的项目,然后切换到另一个文件,然后再回到这个文件。录制按钮应该可用。

于 2015-08-07T20:58:31.220 回答
14

FWIW:我遇到了这个问题,结果我试图在错误的操作系统中运行模拟器。

我试图使用 iOS 8,而 UITesting 仅适用于 iOS 9+。

切换模拟器版本,出现录制按钮。

于 2016-01-23T20:43:46.110 回答
12

我遇到了同样的问题,我的设置是正确的,iOS >= 9.0,添加了目标。

问题是 Xcode 索引需要一段时间(大约 1 小时),索引完成后,录制按钮变为活动状态。

于 2016-04-19T12:49:48.370 回答
6

在 Xcode 8.3 上有同样的问题。

我已经删除了tearDown方法

   override func tearDown() {
        super.tearDown()

    }

因为不需要使用它。一旦我将它添加回来,记录按钮就被启用了。

于 2017-04-04T08:36:47.337 回答
4

对我来说,问题是“版本编辑器”窗格已打开。一旦我切换回助理编辑器,它就起作用了。

于 2016-04-26T20:05:00.480 回答
4

测试方法必须以单词开头,test以便 Xcode 识别它并在光标位于方法内时允许记录。

Xcode 识别该方法的一个迹象是方法名称左侧出现的菱形:

在此处输入图像描述

于 2018-03-10T00:15:40.907 回答
3

这有点愚蠢,但在我阅读的一些文章中遗漏了。

确保你有一个 UITesting 目标,一个常规的测试目标没有为我做。

于 2016-01-03T18:41:36.300 回答
2

听起来很傻,我不得不从左侧边栏中选择另一个文件,然后带着测试用例回到我的文件。之后,该按钮立即变为活动状态。

于 2018-03-13T23:51:23.627 回答
2

检查您的版本编辑器并更正它

在此处输入图像描述

在此处输入图像描述

于 2018-09-18T07:07:23.660 回答
1

我做了一些事情来启用我的录制按钮:

  1. (可选,推荐)- 删除项目的所有 TEST 方案和 TEST 目标,通过创建新的 UITest 目标重新开始。
  2. 确保您的 UITest 方案和主项目运行方案指向同一个目标。
  3. 如果它们可以轻松重新创建/不是绝对重要的,请尝试删除您的其他 UITest 方案。
  4. 产品 >(按住 ALT 键)> 清理构建文件夹
  5. 产品 > 清洁(只是为了安全措施)
  6. 关闭项目,退出 Xcode。
  7. 退出模拟器。
  8. 最后,重新打开 Xcode,加载您的项目。导航到您的 UITest 文件,应该可以使用红色的小按钮。

此外,请确保您的构建/运行目标设置为 iPhone X 9.X。

于 2016-03-13T09:57:14.190 回答
1

我找到了另一种未在此处列出的解决方案。

如果您是子类化XCTestCase,请更改您的类以再次继承该类,保存文件,将其更改回您的子类名称。无需清理或构建。

对于我的项目,我有一个子类XCTestCase,我们称之为APPMyTestCase。我经常发现记录按钮是灰色的,有时每个测试方法旁边的绿色/红色小按钮似乎也无法单独运行它们。如果我将我的子类改回XCTestCase一秒钟​​,一切都会再次起作用。

改变这个:

class APPLoadingPageUITests: APPMyTestCase {
    // tests here
}

对此:

class APPLoadingPageUITests: XCTestCase {
    // tests here
}

然后回到这个:

class APPLoadingPageUITests: APPMyTestCase {
    // tests here
}

这为我修好了。

于 2016-04-29T16:19:51.023 回答
1

当我切换到正确的方案时,它立即恢复了。确保您在UI testing方案中,因为 UI 测试记录器无法在任何其他方案上工作。

于 2018-04-13T11:24:07.803 回答
0

确保XCTestCase每个文件只有一个子类。您希望文件名和类名匹配。

根据我的经验,即使你有 UI 测试工作,如果你在同一个文件中添加工作 XCTestCase 子类的新子类,记录按钮将被禁用(尽管所有其他测试 UI 将继续工作)。

于 2016-06-01T06:50:34.573 回答
0

当我创建一个 UITest 目标时,没有同时创建一个新方案。因此,我必须使用我创建的测试目标创建一个新方案。这启用了录制按钮。

于 2019-11-15T16:29:27.073 回答
-2

您应该导入要测试的视图类。然后将光标放在测试方法上。

于 2015-10-30T06:46:27.157 回答