Lição: 121: Testando Views SwiftUI
Nesta aula, vamos explorar como testar efetivamente views SwiftUI. O SwiftUI revoluciona a maneira como construímos interfaces de usuário para plataformas Apple com uma sintaxe declarativa. No entanto, testar essas views requer uma abordagem um pouco diferente em comparação com o UIKit. Neste artigo, iremos abordar como escrever testes básicos de UI para views SwiftUI, utilizando o framework XCTest.
Configurando o Ambiente de Testes
- Abra seu projeto no Xcode.
- Navegue até a pasta
Tests
, normalmente encontrada no navegador de projeto. - Crie um novo arquivo Swift (por exemplo,
MyAppUITests.swift
) se você ainda não tiver um.
Agora, vamos entrar no processo de teste.
View Básica SwiftUI
Vamos criar uma view SwiftUI simples que iremos testar. Aqui está um exemplo de um aplicativo contador:
import SwiftUI
struct CounterView: View {
@State private var count: Int = 0
var body: some View {
VStack {
Text("Contagem: \(count)")
.font(.largeTitle)
Button(action: {
count += 1
}) {
Text("Incrementar")
}
.padding()
}
}
}
struct CounterView_Previews: PreviewProvider {
static var previews: some View {
CounterView()
}
}
Esta view contém um rótulo Text
que exibe a contagem e um botão para incrementar essa contagem.
Escrevendo Testes Unitários
Agora, vamos escrever testes para nossa CounterView
. Queremos garantir que a interface do usuário se atualize corretamente com base na interação do usuário. Veja como fazer isso:
Importando Módulos Necessários
No seu arquivo de teste, certifique-se de importar SwiftUI e XCTest:
import XCTest
import SwiftUI
@testable import SeuModuloApp
Criando a Classe de Teste
Em seguida, vamos criar uma classe de teste para nossa CounterView
. Veja como fica:
class CounterViewTests: XCTestCase {
func testCounterIncrements() {
let view = CounterView()
let hostingController = UIHostingController(rootView: view)
// Inicialmente, a contagem deve ser 0
XCTAssertEqual(view.count, 0)
// Simulando o pressionamento do botão
hostingController.rootView.count += 1
// Agora verificamos se a contagem foi incrementada
XCTAssertEqual(view.count, 1)
}
}
Executando o Teste
No Xcode, você pode executar seus testes selecionando Product > Testar
no menu ou usando o atalho Command + U
. Certifique-se de que seu teste passe confirmando que a contagem é incrementada como esperado.
Testando a Apresentação da View
Para testar se a view é apresentada corretamente sob condições específicas, você pode usar testes de snapshot ou validações mais simples, dependendo do seu cenário. No entanto, para checagens mais avançadas, você pode querer incluir bibliotecas de Teste de Snapshot, como iOSSnapshotTestCase
, para regressões visuais.
Exemplo de Teste de Apresentação da View
Você pode testar se o texto reflete com precisão o valor do contador:
func testCounterViewDisplaysCorrectCount() {
let view = CounterView()
let hostingController = UIHostingController(rootView: view)
// Começa com contagem 0
XCTAssertEqual(view.count, 0)
XCTAssertEqual(hostingController.rootView.body, Text("Contagem: 0").body)
// Simulando a ação de incrementar
view.count += 1
hostingController.rootView = view
// Agora deve exibir contagem como 1
XCTAssertEqual(view.count, 1)
XCTAssertEqual(hostingController.rootView.body, Text("Contagem: 1").body)
}
Conclusão
Nesta aula, passamos pelos passos de configuração de testes básicos para views SwiftUI. Testar é crucial para garantir que sua UI se comporte conforme o esperado e ofereça uma boa experiência ao usuário.
Usando as técnicas discutidas aqui, você pode começar a construir um conjunto robusto de testes para suas aplicações SwiftUI, garantindo que suas views funcionem corretamente à medida que seu aplicativo evolui. Boas codificações!