【问题标题】:Dynamic Type & iOS Simulator: How can I set the value?动态类型和 iOS 模拟器:如何设置值?
【发布时间】:2016-01-25 05:56:42
【问题描述】:

我想编写我的 UI 测试,以便它们测试动态类型的所有七种状态,从最小到最大。我该怎么做?

我可以在我的Scheme中为模拟器设置一个环境变量,然后制作不同的scheme吗?

或者我可以在我的测试中以编程方式设置动态类型变量吗?

我宁愿不创建一个 DynamicTypeController 然后让它说出它是什么类型,因为我可能会忘记将它用于某些元素,然后没有正确测试行为。

干杯

尼克

【问题讨论】:

    标签: ios testing ios-simulator ui-testing dynamictype


    【解决方案1】:

    对于这个答案的不完整,我深表歉意,但评论太长了,不会有任何代码格式。

    简短的回答是,这不受支持:https://forums.developer.apple.com/thread/21503,但它可能需要雷达。

    更长的答案是,你也许可以一起破解一些东西。模拟器中的动态类型设置在您的文件系统上可用:~/Library/Developer/CoreSimulator/Devices/<device identifier>/data/Library/Preferences/com.apple.UIKit.plist。您可以使用以下方式以编程方式从XCTest 中获取模拟器文件系统的路径:

        let environment = NSProcessInfo.processInfo().environment
        if let resourcesDir = environment[ "SIMULATOR_SHARED_RESOURCES_DIRECTORY" ]
        {
            print( "-- Simulator Shared Resources Directory: \(resourcesDir)" )
            let dictionary = NSMutableDictionary( contentsOfFile: "\(resourcesDir)/data/Library/Preferences/com.apple.UIKit.plist" )!
            print( "Dictionary: \(dictionary)" )
        }
    

    但是,测试是从模拟器目录中进行的沙盒测试,因此您实际上无法打开或修改首选项。尝试解开字典时,该代码 sn-p 失败。我也从未在 Xcode Server 上尝试过。

    您可以使用 shell 脚本修改 plist,如下所示:plutil -replace UIPreferredContentSizeCategoryName -string UICTContentSizeCategoryAccessibilityXXXL com.apple.UIKit.plist。修改文件后模拟器需要重新启动,因此这可能无法在共享构建环境中运行。不幸的是,Xcode 中的 Pre-action 脚本无法使用模拟器文件系统的路径。您可以修改所有模拟器的设置,但同样,可能无法在共享构建环境中运行。

    在一天结束时,您最好创建您的 DynamicTypeController 并添加一些流程以确保没有人使用 UIApplication.preferredContentSizeCategory

    这一切都使用 Xcode 7.1 (7B91b) 进行了测试。

    【讨论】:

    • 嘿卡洛斯,不用道歉,我认为你的回答已经很完整了。我开始的方法是制作不同的模拟器,但现在我绝对会切换到编辑这个 plist。 Xcode 服务器用于同一个项目的同一个团队,所以应该没问题。非常感谢! :-)
    • 我添加了 RADAR #23459874。 PS,对不起,在我将答案标记为正确之前,我才注意到赏金已过期。 :-(
    • 很棒的发现。看起来您可以添加 -UIPreferredContentSizeCategoryName UICTContentSizeCategoryAccessibilityXXXL 作为启动参数(例如在 Xcode 方案中)。感谢这个对我很有帮助的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多