UI 测试 UIPasteboard
Posted
技术标签:
【中文标题】UI 测试 UIPasteboard【英文标题】:UI testing UIPasteboard 【发布时间】:2015-11-09 06:08:49 【问题描述】:为什么这个测试失败了?
在 XCode 7
中创建一个新的 swift ios 项目,名为 Example with UI tests。
示例/ViewController.swift:
import UIKit
class ViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
UIPasteboard.generalPasteboard().string = "test"
ExampleUITests/ExampleUITests.swift:
import XCTest
class ExampleUITests: XCTestCase
override func setUp()
super.setUp()
continueAfterFailure = false
XCUIApplication().launch()
override func tearDown()
super.tearDown()
func testExample()
XCTAssertNotNil(UIPasteboard.generalPasteboard().string) //this fails
【问题讨论】:
【参考方案1】:您无法访问来自UITest
的任何类型的代码
UITest
是一个单独的进程,它使用可访问性来模拟模拟器/设备上的用户操作。因此,您只需检查 UI 并在 UI 上执行可用的操作(点击按钮等)
【讨论】:
所以它无法访问模拟器的全局剪贴板? UI 测试不在模拟器中运行? 假设它在模拟器上运行。只是模拟用户操作,如点击等。它无权访问全局剪贴板 粘贴板可通过XCTest
UI 测试访问。有关使用图像进行测试的示例,请参阅 this question。有关如何使用全局粘贴板和访问数据的详细信息,请参阅this documentation(自 iOS 3+ 起可用)。
@leanne 这听起来很像我们可能不容易从 XCTest 设置剪贴板,因为 this question 描述了细节。以上是关于UI 测试 UIPasteboard的主要内容,如果未能解决你的问题,请参考以下文章
在 UI 测试期间,如何使用 Xcode 7 截取我的 UI 截图?