XCUITest ios 12 значение переключающего элемента включено? - PullRequest
3 голосов
/ 16 июня 2020

Я столкнулся со странной проблемой с swift xcuitest относительно переключателей в моих тестах. Я тестирую приложение настроек, чтобы проверить, включены ли определенные переключатели. Я новичок в Swift, но из прочитанных мной ресурсов я обнаружил, что должен сделать что-то вроде следующего:

let mySwitch = settingsApp.switches["Block Pop-ups"]
XCTAssert(mySwitch.exists)
let isOn = (mySwitch.value as? String).map { $0 == "1" }
XCTAssert(isOn == true)

Однако при тестировании симуляторов на ios 12 я обнаружил значение для переключателя всегда имеет нулевое значение независимо от того, включен он или выключен, например, оба утверждения ниже ложны

XCTAssertFalse(isOn == true)
XCTAssertFalse(isOn == false)

Я нашел this на форумах Apple, но ответа не было. Есть ли у кого-нибудь исправление или обходной путь для этого?

Я использую swift 5.1 и xcode 11

Изменить: требуется решение для iOS 12, я не в состоянии обновить до 13

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Если обновление версии не является вариантом, вы можете использовать обходной путь - например, проверку цвета вместо значения. Вот пример тестового случая, который использует SUITCase (https://github.com/devexperts/suitcase)

import XCTest
import SUITCase

let app = XCUIApplication(bundleIdentifier: "com.apple.Preferences")

class Tests: XCTestCase {

    let mapsCell = app.cells["Maps"]
    let someSwitch = app.switches["Background App Refresh"]

    override func setUp() {
        app.launch()
    }

    func testSwitch() {
        let green = #colorLiteral(red: 0.737254902, green: 0.9411764706, blue: 0.7725490196, alpha: 1)
        let gray = #colorLiteral(red: 0.968627451, green: 0.968627451, blue: 0.968627451, alpha: 1)
        mapsCell.tap()
        if someSwitch.averageColorIs(green) {
            someSwitch.tap()
        }
        XCTAssert(someSwitch.averageColorIs(gray))
        someSwitch.tap()
        XCTAssert(someSwitch.averageColorIs(green))
    }
}

Цветовые литералы хорошо смотрятся в Xcode: enter image description here

0 голосов
/ 16 июня 2020

Этот тестовый код отлично работает в Xcode 11.5 @ iOS 13.5. Похоже, что обновление до новейших версий решает проблему.

import XCTest
import XCTApps

let app = XCTApps.settings.app

class Tests: XCTestCase {

    let developerCell = app.cells["Developer"]
    let someSwitch = app.switches["Dark Appearance"]

    override func setUp() {
        app.launch()
    }

    func testSwitch() {
        developerCell.tap()
        let switchState1 = someSwitch.value as! String
        someSwitch.tap()
        let switchState2 = someSwitch.value as! String
        XCTAssertEqual([switchState1, switchState2].sorted(), ["0", "1"])
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...