🧪 Biblioteca: Teste
Framework de testes unitários extraordinário integrado à linguagem!
✅Por que testar?
Testes são como redes de segurança: você escreve uma vez e eles protegem seu código para sempre.
Com a biblioteca teste, você pode validar que seu código funciona corretamente!
Seu primeiro teste
teste.grupo("Calculadora", função() teste.descreva("operações matemáticas básicas") teste.caso("deve somar dois números", função() teste.afirme_igual(5, 2 + 3) fim) fim) teste.relatorio()
O relatório mostra ✓ para testes que passaram e ✗ para falhos!
Estrutura de Grupos
Organize seus testes em grupos lógicos que podem ser aninhados:
teste.grupo("Usuários", função() teste.descreva("gerencia usuários do sistema") teste.grupo("Criação", função() teste.caso("cria usuário válido", função() -- seu teste aqui fim) fim) teste.grupo("Exclusão", função() teste.caso("remove usuário", função() -- seu teste aqui fim) fim) fim)
Hooks de Ciclo de Vida
Execute código antes e depois dos testes:
teste.grupo("Banco de Dados", função() local conexao teste.antes_de_todos(função() -- Executado UMA vez antes de todos os testes conexao = banco.conecte() fim) teste.antes_de_cada(função() -- Executado ANTES de cada teste conexao:limpe() fim) teste.depois_de_cada(função() -- Executado DEPOIS de cada teste fim) teste.depois_de_todos(função() -- Executado UMA vez depois de todos os testes conexao:feche() fim) teste.caso("insere registro", função() -- A conexão já está pronta! fim) fim)
Asserções
Igualdade e Diferença
teste.afirme_igual(42, resultado) -- esperado == atual teste.afirme_diferente(a, b) -- a != b
Valores Booleanos e Nulos
teste.afirme(condicao) -- condição é verdadeira teste.afirme_verdadeiro(valor) -- valor == verdadeiro teste.afirme_falso(valor) -- valor == falso teste.afirme_nulo(valor) -- valor == nulo teste.afirme_não_nulo(valor) -- valor != nulo
Tipos
teste.afirme_tipo("número", 42) -- valida tipo teste.afirme_tipo("texto", "Sol") teste.afirme_tipo("tabela", {}) teste.afirme_tipo("função", função() fim)
Comparações
teste.afirme_maior(10, 5) -- 10 > 5 teste.afirme_menor(5, 10) -- 5 < 10 teste.afirme_maior_igual(10, 10) -- 10 >= 10 teste.afirme_menor_igual(5, 10) -- 5 <= 10
Coleções
teste.afirme_contem({1, 2, 3}, 2) -- tabela contém valor teste.afirme_tamanho(3, {1, 2, 3}) -- tamanho == 3 teste.afirme_vazio({}) -- tabela está vazia
Erros
teste.afirme_erro(função() lance_erro("boom!") fim) -- deve lançar erro teste.afirme_sem_erro(função() local x = 1 + 1 fim) -- não deve lançar erro
Controle
teste.falhe("não deveria chegar aqui") -- força falha teste.pule("funcionalidade pendente") -- pula teste
Execução e Controle
teste.execute() -- executa todos os testes pendentes teste.reinicie() -- reinicia contadores de teste
Relatório
No final, chame teste.relatorio() para ver um resumo visual:
╔══════════════════════════════════════════════════════════╗ ║ RELATÓRIO DE TESTES ║ ╠══════════════════════════════════════════════════════════╣ ║ Total: 11 | ✓ Passou: 10 | ✗ Falhou: 1 | ○ Pulados: 0 ║ ║ Tempo: 0.013s ║ ╚══════════════════════════════════════════════════════════╝
Testes são a base de um código confiável. Use a biblioteca
teste em todos os seus projetos!