Testing Guidelines
Padrões de testes do projeto
Cobertura
| Tipo |
Mínimo |
| Geral |
85% |
| Código crítico (auth, payments) |
90% |
| Scripts/PoCs |
Básico ou nenhum |
Tipos de Teste
| Tipo |
Pasta |
Quando |
| Unitário |
tests/unit/ |
Lógica isolada |
| Integração |
tests/integration/ |
Componentes juntos |
| E2E |
tests/e2e/ |
Fluxos completos |
Frameworks por Stack
| Stack |
Framework |
Mocks |
| Java |
JUnit 5 + Mockito |
Mockito |
| Python |
Pytest |
pytest-mock, unittest.mock |
| Node |
Vitest |
vitest mocks |
| Vue |
Vitest + Vue Test Utils |
- |
| Angular |
Jasmine + Karma |
- |
Nomenclatura
test_[método]_[cenário]_[resultado esperado]
# Exemplos:
test_getUserById_validId_returnsUser
test_getUserById_invalidId_throwsNotFound
test_createInvoice_validData_returnsCreated
Estrutura (AAA)
def test_exemplo():
# Arrange - preparar dados
user = create_user(name="Test")
# Act - executar ação
result = service.get_user(user.id)
# Assert - verificar resultado
assert result.name == "Test"
Mocks
- Mockar dependências externas (APIs, DB)
- Não mockar o que está sendo testado
- Usar fixtures para dados reutilizáveis
CI
- Testes rodam em todo PR
- Bloquear merge se falhar
- Relatório de cobertura automático