Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在单元测试期间以编程方式编辑iPhone可访问性设置?_Ios_Swift_Unit Testing - Fatal编程技术网

Ios 如何在单元测试期间以编程方式编辑iPhone可访问性设置?

Ios 如何在单元测试期间以编程方式编辑iPhone可访问性设置?,ios,swift,unit-testing,Ios,Swift,Unit Testing,我的应用程序支持动态字体。当用户在设置(settings>General>Accessibility>Larger Text)中更改字体大小并跳回应用程序时,每个标签都应该更新 它是通过重写UILabel的函数来实现的 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitColl

我的应用程序支持动态字体。当用户在设置(
settings>General>Accessibility>Larger Text
)中更改字体大小并跳回应用程序时,每个标签都应该更新

它是通过重写UILabel的函数来实现的

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    guard previousTraitCollection?.preferredContentSizeCategory != traitCollection.preferredContentSizeCategory else { return }

    let metrics: UIFontMetrics = UIFontMetrics(
        forTextStyle: UIFont.TextStyle.body
    )
    font = metrics.scaledFont(for: font)
}
现在我需要测试其他视图是否对标签的动态特性做出正确反应

具体来说,我希望进行以下单元测试:

  • 使用标签创建视图
  • 获取视图的大小
  • 将系统字体更改为更大
  • 获取视图的大小
  • 比较尺寸是否改变

  • 您可以使用以下代码增加系统字体大小

        let settings = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
        settings.launch()
        settings.tables.staticTexts["General"].tap()
        settings.tables.staticTexts["Accessibility"].tap()
        settings.tables.staticTexts["Larger Text"].tap()
        settings.sliders.element.adjust(toNormalizedSliderPosition: 0.7) // Increase as you need
    
    要返回到您自己的应用程序

    let yourapp = XCUIApplication(bundleIdentifier: "com.xxx.yourappbundleid")
    yourapp.activate()
    

    在iPhone(真实设备)上测试,iOS 12.1.4

    下面的答案能解决您的问题吗?是的。谢谢:)
    let yourapp = XCUIApplication(bundleIdentifier: "com.xxx.yourappbundleid")
    yourapp.activate()