【问题标题】:How to do basic testing in a SwiftUI project?如何在 SwiftUI 项目中进行基本测试?
【发布时间】:2021-09-18 07:33:15
【问题描述】:

我有一个超级基本的应用程序,当你按下按钮时它会改变圆圈的颜色:

struct ContentView: View {
    @State private var color: Color = .red
    
    var body: some View {
        VStack {
            Circle()
                .frame(width: 100, height: 100)
                .foregroundColor(color)
            
            Button("Press me") {
                color = color == .red ? .blue : .red
            }
        }
    }
}

我要做的只是编写一个测试来检查按钮是否适当地改变了圆圈的颜色。

我刚刚阅读了有关 Xcode 的所有单元测试和 UI 测试功能的信息,但不确定如何去做。从我在线阅读的资源中,他们都建议使用快照测试或使用名为 ViewInspector 的包。然而,我只是想玩转 Xcode 的内置功能,而不是寻找任何严格的测试框架或方法。有人可以告诉我 Apple 建议如何测试 SwiftUI 视图吗?如果没有官方/推荐的方式,有人可以告诉我如何编写单元/UI 测试来检查圆圈的颜色是否适当改变。

提前致谢!

【问题讨论】:

  • @loremipsum 我读过那篇文章,但我认为它没有提到如何检查按钮是否正确执行其操作。如果您可以编写一段代码来演示如何操作,那将非常有帮助。

标签: ios swift testing swiftui xctest


【解决方案1】:

This thread 声明

XCTest 用于功能测试,而不是断言视觉需求

这是真的。所以如果你不想安装ViewInspector依赖,你可以做什么,你可以

  1. 让您的@State var color: Color 具有默认访问修饰符。
  2. 具有切换颜色的功能
  3. 创建View 的实例
  4. 测试一下。

请参阅下面的屏幕截图。请注意,这是在操场上完成的,但在实际项目中也可以参考

【讨论】:

  • 苹果有没有特别推荐这样做的方式?或者这是最好的方法?谢谢你这么快的回答顺便说一句!
  • 仅供参考,我稍微更改了我的代码。而不是真的。所以 XCTests 用于功能测试。 Apple 没有关于如何验证您的 UI 的任何建议,尽管您可以自行破解它,我已经展示了这一点。
  • 另外你是如何让你的返回箭头成为一个正确的箭头而不是“->”
  • 啊,好吧。如果这是完成工作的“黑客”,我应该避免在实际项目中这样做吗?我假设在一个真实的项目中我应该使用快照测试或 ViewInspector 依赖项
  • 你必须在 Xcode 上启用Font ligatures。不确定是否所有字体都能达到我和许多其他开发人员似乎使用的那种技巧Fira Codehere
猜你喜欢
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
相关资源
最近更新 更多