SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
18.11.2024

Lição: 61: Testes Unitários com XCTest

Testes unitários são uma parte essencial do desenvolvimento de software que permite aos desenvolvedores garantir a correção do seu código, testando componentes individuais de forma isolada. Nesta aula, exploraremos os conceitos-chave de testes unitários em Swift usando o framework XCTest.

O que é XCTest?

XCTest é o framework que a Apple fornece para escrever testes unitários e de desempenho em Swift e Objective-C. Ele se integra perfeitamente ao Xcode, permitindo que você execute testes diretamente do IDE e veja os resultados em tempo real.

Configurando Seu Ambiente de Testes

Para começar com XCTest, você precisa criar um destino de teste em seu projeto Xcode:

  1. Abra seu projeto no Xcode.
  2. Vá em Arquivo -> Novo -> Destinos....
  3. Selecione iOS -> Pacote de Testes Unitários.
  4. Clique em Próximo, nomeie seu destino de teste e certifique-se de que ele esteja associado ao seu destino principal do aplicativo.
  5. Clique em Concluir.

Uma vez que o destino de teste é criado, o Xcode gerará um arquivo de teste padrão que você pode modificar para escrever seus testes.

Escrevendo Seu Primeiro Teste

Vamos criar uma função simples em Swift e escrever um teste unitário para ela.

Função de Exemplo

Aqui está uma função de exemplo que adiciona dois inteiros:

class Calculadora {
    func adicionar(_ a: Int, _ b: Int) -> Int {
        return a + b
    }
}

Criando o Caso de Teste

Agora, vamos criar um caso de teste para o método adicionar.

import XCTest
@testable import SeuModuloDeApp // Substitua pelo nome do seu módulo de aplicativo

class TestesCalculadora: XCTestCase {

    var calculadora: Calculadora!

    // Método de configuração chamado antes de cada método de teste na classe
    override func setUp() {
        super.setUp()
        calculadora = Calculadora()
    }

    // Método de limpeza chamado após cada método de teste na classe
    override func tearDown() {
        calculadora = nil
        super.tearDown()
    }

    // Caso de teste para a função adicionar
    func testAdicionar() {
        let resultado = calculadora.adicionar(2, 3)
        XCTAssertEqual(resultado, 5, "Esperado 2 + 3 igual a 5")

        let resultado2 = calculadora.adicionar(-1, 1)
        XCTAssertEqual(resultado2, 0, "Esperado -1 + 1 igual a 0")
    }
}

Explicando o Código

  • Declaração de Importação: Importamos XCTest para acessar as funcionalidades de teste e @testable import SeuModuloDeApp para importar o código que queremos testar.

  • XCTestCase: Nossa classe de teste TestesCalculadora herda de XCTestCase. Esta é a classe base da qual todas as classes de teste devem herdar.

  • setUp e tearDown:

    • setUp() é chamado antes de cada método de teste ser executado, que é o local ideal para instanciar seus objetos.
    • tearDown() é chamado após cada método de teste ser executado. É útil para limpeza.
  • testAdicionar():

    • Este é o nosso método de teste real. Ele começa com o prefixo test, que permite que o XCTest o reconheça como um caso de teste.
    • Chamamos o método adicionar e usamos XCTAssertEqual para verificar se a saída é o que esperamos.

Executando Seus Testes

Para executar os testes, você pode usar os seguintes métodos:

  1. No Xcode, clique no ícone de diamante ao lado do método de teste.
  2. Use Command + U para executar todos os testes no projeto.

O Xcode compilará os testes e os executará, mostrando os resultados no navegador de testes.

Testes Assíncronos

Às vezes, você pode precisar lidar com código assíncrono. O XCTest fornece uma maneira de lidar com isso:

func testOperacaoAssincrona() {
    let expectativa = self.expectation(description: "Operação assíncrona")

    // Simulando uma operação assíncrona
    DispatchQueue.global().async {
        sleep(1) // Simulando atraso
        expectativa.fulfill()
    }

    // Aguardando expectativas
    waitForExpectations(timeout: 2) { (error) in
        XCTAssertNil(error, "Erro de timeout: \(error!)")
    }
}

Conclusão

Testes unitários com XCTest são uma prática valiosa que ajuda a garantir a confiabilidade e a manutenibilidade do seu código. Nesta aula, cobrimos como configurar um ambiente de teste, escrever um teste unitário simples e entender conceitos-chave como configuração e limpeza. À medida que você avança na sua jornada de desenvolvimento em Swift, abraçar os testes unitários melhorará significativamente a qualidade do seu código e sua confiança no software que você cria. Bons testes!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!