# 🧪 Guia de Execução de Testes - GestorEasy v3

## 📋 Pré-requisitos

### 1. Instalar Dependências

```bash
composer install
```

Isso instalará:
- PHPUnit 10.0
- PHPStan (análise estática)
- PHP Code Coverage

### 2. Configurar Ambiente

Os testes usam SQLite em memória, então não é necessário configurar banco de dados.

### 3. Verificar PHP

```bash
php -v
```

Deve ser PHP 8.1 ou superior.

## 🚀 Executando Testes

### Todos os Testes

```bash
# Linux/Mac
./tests/run-tests.sh

# Windows
tests\run-tests.bat

# Ou usando Composer
composer test
```

### Testes Específicos

```bash
# Testes de um módulo
vendor/bin/phpunit tests/Modules/Auth

# Testes de uma classe
vendor/bin/phpunit tests/Modules/Auth/AuthTest.php

# Testes com verbose
vendor/bin/phpunit --verbose

# Testes com cobertura
composer test-coverage
```

### Testes com Cobertura

```bash
composer test-coverage
```

Isso gerará um relatório HTML em `coverage/index.html`.

## 📊 Estrutura de Testes

```
tests/
├── bootstrap.php              # Bootstrap
├── TestCase.php               # Classe base
├── Modules/                   # Testes dos módulos
│   ├── Auth/
│   │   └── AuthTest.php       # 4 testes
│   ├── Clientes/
│   │   └── ClientsTest.php    # 5 testes
│   ├── Produtos/
│   │   └── ProductsTest.php   # 5 testes
│   ├── Estoque/
│   │   └── InventoryTest.php  # 4 testes
│   ├── Vendas/
│   │   └── SalesTest.php      # 3 testes
│   ├── Compras/
│   │   └── PurchasesTest.php  # 2 testes
│   ├── Financeiro/
│   │   └── FinanceiroTest.php # 5 testes
│   ├── PCP/
│   │   └── PCPTest.php        # 4 testes
│   ├── CRMAvancado/
│   │   └── CRMAvancadoTest.php # 4 testes
│   ├── Workflows/
│   │   └── WorkflowsTest.php  # 6 testes
│   ├── SPED/
│   │   └── SPEDTest.php       # 4 testes
│   └── BI/
│       └── BITest.php         # 4 testes
└── Integration/
    └── ApiTest.php            # Testes de integração
```

## 🎯 Testes Implementados

### Módulos Core
- ✅ **Auth** - 4 testes
- ✅ **Clientes** - 5 testes
- ✅ **Produtos** - 5 testes
- ✅ **Estoque** - 4 testes
- ✅ **Vendas** - 3 testes
- ✅ **Compras** - 2 testes
- ✅ **Financeiro** - 5 testes

### Módulos Avançados
- ✅ **PCP** - 4 testes
- ✅ **CRMAvancado** - 4 testes
- ✅ **Workflows** - 6 testes
- ✅ **SPED** - 4 testes
- ✅ **BI** - 4 testes

### Total: 50+ testes

## 📈 Cobertura Atual

- **Módulos com Testes:** 12/46 (26.1%)
- **Testes Totais:** 50+
- **Cobertura de Código:** A ser calculado

## 🔧 Configuração Avançada

### PHPUnit.xml

O arquivo `phpunit.xml` contém:
- Configuração de testes
- Cobertura de código
- Ambiente de teste
- Filtros de arquivos

### Ambiente de Teste

Os testes usam:
- SQLite em memória
- Dados isolados por teste
- Helpers para criar dados de teste

## 🐛 Troubleshooting

### Erro: PHPUnit não encontrado

```bash
composer install
```

### Erro: Classe não encontrada

```bash
composer dump-autoload
```

### Erro: SQLite não disponível

Instale a extensão SQLite do PHP:
```bash
# Ubuntu/Debian
sudo apt-get install php-sqlite3

# Windows (XAMPP)
# Já vem instalado
```

## 📝 Adicionando Novos Testes

### 1. Criar arquivo de teste

```php
<?php

namespace Tests\Modules\MeuModulo;

use Tests\TestCase;

class MeuModuloTest extends TestCase {
    
    public function testMinhaFuncionalidade(): void {
        // Arrange
        $dados = ['campo' => 'valor'];
        
        // Act
        $resultado = minhaFuncao($dados);
        
        // Assert
        $this->assertNotNull($resultado);
    }
}
```

### 2. Executar teste

```bash
vendor/bin/phpunit tests/Modules/MeuModulo/MeuModuloTest.php
```

## 🎯 Próximos Passos

1. ✅ Estrutura de testes criada
2. ✅ Testes para módulos core implementados
3. ✅ Testes para módulos avançados implementados
4. ⏳ Adicionar mais testes
5. ⏳ Implementar testes de integração
6. ⏳ Aumentar cobertura para 80%+

## 📚 Documentação

- [PHPUnit Documentation](https://phpunit.de/documentation.html)
- [Testing Best Practices](https://phpunit.de/documentation.html)
- [README_TESTES.md](../README_TESTES.md)

---

**Última Atualização:** 2025-01-27

