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测试

APP UI自动化测试是鸡肋吗?

在 UI 测试期间测试对象状态 (iOS)

在 UI 测试期间,如何使用 Xcode 7 截取我的 UI 截图?

Xcode UI 测试:我可以使用 UI 测试脚本访问目标应用程序文件夹吗?

Web UI自动化测试之Selenium3