如何在 UITests 中禁用 SwiftUI 动画?

问题描述 投票:0回答:1

我尝试使用以下代码禁用 UITests 中的动画:

let app = XCUIApplication()
app.launchEnvironment = ["DISABLE_ANIMATIONS": "1"]

我也尝试过:

UIView.setAnimationsEnabled(false)

但是当我在模拟器上运行 UITests 时它不会禁用动画。

是因为我使用的是 SwiftUI 吗?

我想要禁用的动画是从一个 SwiftUI 视图到另一个视图的视图转换。这是我对转换进行编码的方式:

NavigationLink(destination: MapView(), isActive: $viewModel.isDataLoaded) {
     EmptyView()
}

使用 SwiftUI 时是否有另一种方法可以禁用 UITests 中的动画?

xcode swiftui uitest
1个回答
2
投票

需要在主应用程序中显式(通过代码)完成,因为 UITests 在不同的进程中运行,即。应该是这样的

struct YourApp: App {
    init() {
        let env = ProcessInfo.processInfo.environment
        if env["DISABLE_ANIMATIONS"] == "1" {          // << here !!
            UIView.setAnimationsEnabled(false)
        }
    }

    var body: some Scene {
      // ... scene here
    }
}

然后就可以使用了

let app = XCUIApplication()
app.launchEnvironment = ["DISABLE_ANIMATIONS": "1"]

使用 Xcode 13.3 / iOS 15.4 进行测试

© www.soinside.com 2019 - 2024. All rights reserved.