【问题标题】:UI testing UIPasteboardUI 测试 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
    }
}

【问题讨论】:

    标签: ios swift ui-testing uipasteboard


    【解决方案1】:

    您无法访问来自UITest 的任何类型的代码

    UITest 是一个单独的进程,它使用可访问性来模拟模拟器/设备上的用户操作。因此,您只需检查 UI 并在 UI 上执行可用的操作(点击按钮等)

    【讨论】:

    • 所以它无法访问模拟器的全局剪贴板? UI 测试不在模拟器中运行?
    • 假设它在模拟器上运行。只是模拟用户操作,如点击等。它无权访问全局剪贴板
    • 粘贴板可通过XCTest UI 测试访问。有关使用图像进行测试的示例,请参阅 this question。有关如何使用全局粘贴板和访问数据的详细信息,请参阅this documentation(自 iOS 3+ 起可用)。
    • @leanne 这听起来很像我们可能不容易从 XCTest 设置剪贴板,因为 this question 描述了细节。
    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多