Sobes.tech
Junior

O que é o teste de unidade e quais são os seus principais objetivos?

sobes.tech IA

Resposta da IA

O teste unitário é um método de teste de software em que as partes mais pequenas e isoladas do código fonte (unidades), independentes funcionalmente, são testadas. Geralmente, uma unidade é um método ou uma classe.

Objetivos principais:

  • Garantia de correção: Verificar se cada parte individual do programa funciona como esperado em isolamento.
  • Facilitação da depuração: Localizar defeitos nas fases iniciais do desenvolvimento, tornando a sua correção menos dispendiosa.
  • Melhoria do design: Escrever código testável frequentemente leva a um código mais modular e bem projetado.
  • Manutenção do refatoramento: A capacidade de alterar a estrutura do código de forma segura, confiando que a funcionalidade existente não será afetada.
  • Documentação: Os testes podem servir como exemplos de uso do código, documentando o seu comportamento.
  • Redução de custos: Detectar e corrigir erros nas fases iniciais é muito mais barato do que em fases posteriores ou em produção.

Exemplo de um teste unitário simples usando JUnit:

// src/test/java/com/example/CalculatorTest.java
package com.example;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

class CalculatorTest {

    @Test
    void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result, "Espera-se que a soma de 2 e 3 seja 5"); // Verifica que 2 + 3 = 5
    }

    @Test
    void testSubtract() {
        Calculator calculator = new Calculator();
        int result = calculator.subtract(5, 2);
        assertEquals(3, result, "Espera-se que a diferença de 5 e 2 seja 3"); // Verifica que 5 - 2 = 3
    }
}
// src/main/java/com/example/Calculator.java
package com.example;

public class Calculator {

    public int add(int a, int b) {
        return a + b;
    }

    public int subtract(int a, int b) {
        return a - b;
    }
}