Xcode 7 UI 测试,录制按钮灰显
Xcode 7 UI Tests, Recording button is greyed out
我正在尝试使用 Xcode 7 将 UI 测试添加到我现有的项目中。但是 UI 测试记录按钮始终显示为灰色。我在这里缺少什么?
我尝试重新启动 Xcode、清理并重建项目并添加新的 UI 测试目标。有没有其他人经历过同样的行为?
我也被困在这个问题上有一段时间了。为了记录,您必须在 class 中 Xcode 识别为包含测试。将文件添加到您的 UI 测试目标,内容如下:
import Foundation
import XCTest
class MyTests: XCTestCase {
func testSomething() {
}
}
保存文件,清理项目,然后切换到另一个文件,然后返回到这个文件。录制按钮应该可用。
您应该导入要测试的视图 Class。然后将光标放在测试方法中。
这有点傻,但在我阅读的一些文章中遗漏了。
确保你有一个 UITesting 目标,一个常规的测试目标没有为我做。
FWIW:我遇到了这个问题,结果我试图 运行 错误的模拟器 OS。
我尝试使用 iOS 8,但 UITesting 仅适用于 iOS 9+。
切换模拟器版本,出现录制按钮
我做了一些事情来启用我的录制按钮:
- (可选,推荐)- 删除项目的所有测试方案和测试目标,通过创建新的 UITest 目标重新开始。
- 确保您的 UITest 方案和主项目 运行 方案指向相同的目标。
- 尝试删除您的其他 UITest 方案,如果它们很容易 recreated/are 不是绝对重要的。
- 产品 >(按住 ALT 键)> 清理构建文件夹
- 产品 > 清洁(只是为了安全措施)
- 关闭项目,退出 Xcode。
- 退出模拟器。
- 最后,重新打开 Xcode,加载您的项目。导航到您的 UITest 文件,应该可以使用红色的小按钮。
此外,请确保您的 build/run 目标设置为 iPhone X 9.X。
我遇到了同样的问题,我的设置是正确的,iOS >= 9.0,添加了目标。
问题是 Xcode 索引需要一段时间(大约 1 小时),索引完成后,录制按钮变为活动状态。
对我来说,问题是 "Version Editor" 窗格是打开的。我一切换回助理编辑器,它就起作用了。
我发现了另一种解决方案,但我没有在此处列出。
如果您是子classing XCTestCase
,请更改您的 class 以再次继承,保存文件,更改它返回到您的 subclass 名称。无需清理或构建。
对于我的项目,我有一个 XCTestCase
的子类,我们称它为 APPMyTestCase
。我经常发现记录按钮是灰色的,有时每个测试方法旁边的 green/red 小按钮似乎也无法单独 运行 它们。如果我将我的 subclass 改回 XCTestCase
一秒钟,一切都会恢复正常。
改变这个:
class APPLoadingPageUITests: APPMyTestCase {
// tests here
}
为此:
class APPLoadingPageUITests: XCTestCase {
// tests here
}
然后回到这个:
class APPLoadingPageUITests: APPMyTestCase {
// tests here
}
这帮我修好了。
确保每个文件只有 XCTestCase
个子 class。您希望文件名和 class 名称匹配。
根据我的经验,即使您有 UI 测试工作,如果您在同一文件中添加工作 XCTestCase 子 class 的新子 class,记录按钮将被禁用(尽管所有其他测试 UI 将继续工作)。
在 Xcode 8.3 上遇到了同样的问题。
我删除了 tearDown
方法
override func tearDown() {
super.tearDown()
}
因为不需要使用它。一旦我将它添加回来,记录按钮就被启用了。
要启用红色按钮,您必须将光标放在测试方法上:
测试方法必须以单词 test
开头,以便 Xcode 识别它并允许在光标位于方法内部时进行记录。
Xcode 识别方法的一个迹象是方法名称左侧出现的菱形:
听起来很傻,我不得不从左侧的边栏select另一个文件,然后返回到我的测试用例文件。之后,按钮立即激活。
当我切换到正确的方案时,它立即回来了。确保您使用的是 UI testing
方案,因为 UI 测试记录器无法在任何其他方案上工作。
检查您的版本编辑器并更正它
当我创建一个 UITest Target 时,没有同时创建一个新方案。因此,我必须使用我创建的测试目标创建一个新方案。这启用了录制按钮。
我正在尝试使用 Xcode 7 将 UI 测试添加到我现有的项目中。但是 UI 测试记录按钮始终显示为灰色。我在这里缺少什么?
我尝试重新启动 Xcode、清理并重建项目并添加新的 UI 测试目标。有没有其他人经历过同样的行为?
我也被困在这个问题上有一段时间了。为了记录,您必须在 class 中 Xcode 识别为包含测试。将文件添加到您的 UI 测试目标,内容如下:
import Foundation
import XCTest
class MyTests: XCTestCase {
func testSomething() {
}
}
保存文件,清理项目,然后切换到另一个文件,然后返回到这个文件。录制按钮应该可用。
您应该导入要测试的视图 Class。然后将光标放在测试方法中。
这有点傻,但在我阅读的一些文章中遗漏了。
确保你有一个 UITesting 目标,一个常规的测试目标没有为我做。
FWIW:我遇到了这个问题,结果我试图 运行 错误的模拟器 OS。
我尝试使用 iOS 8,但 UITesting 仅适用于 iOS 9+。
切换模拟器版本,出现录制按钮
我做了一些事情来启用我的录制按钮:
- (可选,推荐)- 删除项目的所有测试方案和测试目标,通过创建新的 UITest 目标重新开始。
- 确保您的 UITest 方案和主项目 运行 方案指向相同的目标。
- 尝试删除您的其他 UITest 方案,如果它们很容易 recreated/are 不是绝对重要的。
- 产品 >(按住 ALT 键)> 清理构建文件夹
- 产品 > 清洁(只是为了安全措施)
- 关闭项目,退出 Xcode。
- 退出模拟器。
- 最后,重新打开 Xcode,加载您的项目。导航到您的 UITest 文件,应该可以使用红色的小按钮。
此外,请确保您的 build/run 目标设置为 iPhone X 9.X。
我遇到了同样的问题,我的设置是正确的,iOS >= 9.0,添加了目标。
问题是 Xcode 索引需要一段时间(大约 1 小时),索引完成后,录制按钮变为活动状态。
对我来说,问题是 "Version Editor" 窗格是打开的。我一切换回助理编辑器,它就起作用了。
我发现了另一种解决方案,但我没有在此处列出。
如果您是子classing XCTestCase
,请更改您的 class 以再次继承,保存文件,更改它返回到您的 subclass 名称。无需清理或构建。
对于我的项目,我有一个 XCTestCase
的子类,我们称它为 APPMyTestCase
。我经常发现记录按钮是灰色的,有时每个测试方法旁边的 green/red 小按钮似乎也无法单独 运行 它们。如果我将我的 subclass 改回 XCTestCase
一秒钟,一切都会恢复正常。
改变这个:
class APPLoadingPageUITests: APPMyTestCase {
// tests here
}
为此:
class APPLoadingPageUITests: XCTestCase {
// tests here
}
然后回到这个:
class APPLoadingPageUITests: APPMyTestCase {
// tests here
}
这帮我修好了。
确保每个文件只有 XCTestCase
个子 class。您希望文件名和 class 名称匹配。
根据我的经验,即使您有 UI 测试工作,如果您在同一文件中添加工作 XCTestCase 子 class 的新子 class,记录按钮将被禁用(尽管所有其他测试 UI 将继续工作)。
在 Xcode 8.3 上遇到了同样的问题。
我删除了 tearDown
方法
override func tearDown() {
super.tearDown()
}
因为不需要使用它。一旦我将它添加回来,记录按钮就被启用了。
要启用红色按钮,您必须将光标放在测试方法上:
测试方法必须以单词 test
开头,以便 Xcode 识别它并允许在光标位于方法内部时进行记录。
Xcode 识别方法的一个迹象是方法名称左侧出现的菱形:
听起来很傻,我不得不从左侧的边栏select另一个文件,然后返回到我的测试用例文件。之后,按钮立即激活。
当我切换到正确的方案时,它立即回来了。确保您使用的是 UI testing
方案,因为 UI 测试记录器无法在任何其他方案上工作。
检查您的版本编辑器并更正它
当我创建一个 UITest Target 时,没有同时创建一个新方案。因此,我必须使用我创建的测试目标创建一个新方案。这启用了录制按钮。