Laravel a Diferença entre Unit Test e Feature Test

Posted on: December 09, 2025 02:01 AM

Posted by: Renato

Categories: Laravel PHP tests

Views: 133

No Laravel (e no PHP em geral), a diferença entre Unit Test e Feature Test é principalmente o nível de escopo que cada teste cobre:


1. Unit Test (Teste Unitário)

O que é:

  • Testa uma única unidade de código, geralmente um método ou classe isolada.

  • Não depende de banco de dados, HTTP, autenticação, serviços externos etc.

  • Deve ser rápido, isolado e sem side effects.

Exemplos típicos:

  • Testar uma classe helper.

  • Testar uma regra de negócio pura.

  • Testar um service que não acessa DB.

  • Testar métodos de manipulação de arrays, cálculos, validações, etc.

Estrutura no Laravel:

tests/Unit/

Exemplo:

public function test_calcula_total()
{
    $service = new PedidoService();

    $total = $service->calcularTotal([10, 20, 30]);

    $this->assertEquals(60, $total);
}

➡️ Só testa a lógica interna.


2. Feature Test (Teste de Funcionalidade)

O que é:

  • Testa fluxos completos da aplicação.

  • Pode testar requisições HTTP, rota + controller + middleware + model + DB.

  • Usa banco via RefreshDatabase ou DatabaseMigrations.

  • É mais lento, mas mais próximo do comportamento real.

Exemplos típicos:

  • Testar um endpoint da API.

  • Validar middleware.

  • Testar autenticação.

  • Testar criação de registro no banco.

  • Testar upload de arquivo.

  • Testar fluxo de login ao pagamento.

Estrutura no Laravel:

tests/Feature/

Exemplo:

public function test_cria_usuario_com_sucesso()
{
    $response = $this->postJson('/api/users', [
        'name' => 'Renato',
        'email' => '[email protected]',
        'password' => '123456',
    ]);

    $response->assertStatus(201);
    $this->assertDatabaseHas('users', ['email' => '[email protected]']);
}

➡️ Envolve toda a pilha Laravel.


🆚 Comparativo Rápido

Tipo de Teste

O que cobre

Velocidade

Usa DB?

Ideal pra

Unit Test

Um método/classe isolado

⚡ Muito rápido

❌ Não

Regras de negócio puras

Feature Test

Várias camadas juntas

🐢 Mais lento

✅ Sim

Roteamento, controllers, integrações


🔥 Quando usar qual?

Use Unit Tests quando:

  • Você está testando lógica isolada.

  • Você quer rapidez.

  • Você quer detectar falhas em partes pequenas.

Use Feature Tests quando:

  • Você quer garantir que a aplicação funciona de ponta a ponta.

  • Vai testar APIs, views, middleware.

  • Quer validar integração com banco de dados.


🎯 Resumo simples

Unit Test = testa o cérebro.
Feature Test = testa o corpo inteiro.


 

 


2

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

Laravel (227) PHP (151) linux (124) Variados (110) Dicas (58) ubuntu (58) developer (48) postgresql (45) database (44) sql (42) Docker (32) front-end (31) mysql (31) devops (26) webdev (24) programming (23) aws (19) tecnologia (19) eloquent (19) dba (18) OUTROS (17) backend (16) laravelphp (16) debian (12) dev (12) reactjs (10) 100DaysOfCode (10) git (10) react (10) nginx (9) inteligencia-artificial (9) PHP Swoole (9) node (9) javascript (9) linux-tools (8) Architecture (8) vue (7) github (7) ciencia (7) nodejs (6) api (6) vscode (6) webservice (6) jwt (6) vim (6) windows (6) arquitetura (6) authentication (5) ia (5) reactnative (5) rest (5) DevSecOps (5) servers (5) apache (5) macox (5) s3 (5) Kubernetes (4) gitlab (4) opensource (4) mariadb (4) jenkins (4) shell (4) mongodb (4) angular (4) autenticacao (4) wsl (4) Swoole (4) lets-encrypt (4) query (4) Raspberry (4) angularjs (4) inteligenciadedados (4) Padrao de design (4) artigo (4) google (4) npm (4) openai (4) js (3) mysqli (3) Black Hat (3) RabbitMQ (3) educacao (3) intel (3) CMS (2) sail (3) script (3) performance (3) json (3) authorization (3) phpswoole (3) ddd (3) blade (3) terminal (3) log (3) mac (3) fedora (3) containers (3) ssh (3) bash (3) hardware (3) tests (3) macos (3) web (2) jobs (3) websocket (3) db (3) politica (3) Curisidades (2) Solid (2) zsh (2) Go (2) BigLinux (2) POO (2) LazyVim (2) gource (2) Python (2) Oauth2 (2) android (2) unix (2) magento (2) iot (2) ffmpeg (2) combustivel (2) webhook (2) microservices (2) bancodedados (2) tailwind (2) homeOffice (2) html (2) openswoole (2) artificialintelligence (2) security (2) auth (2) cron (2) phpunit (2) kube (2) multiple_authen (2) policia (2) neovim (2) golang (2) noticias (2) livros (2) Transcribe (2) ElonMusk (2) redis (2) claude (2) ArchLinux (2) java (2) saude (1) seguranca (2) phpfpm (2) autorizacao (2) monitoring (2) laptop (2) gnome (2) powerbi (2) telefonia (2) nvm (2) imagick (2) maps (2) colors (2) Passport (2) JQuery (2) front (1) wine (1) covid19 (0) services (1) phpjasper (1) models (1) kali-linux (1) geojson (1) yarn (1) picpay (1) Monolith (1) banco (1) PNPM (1) Desenvolvedor (1) Structurizr (1) symfony (1) presenter (1) lider (1) guard (1) tensorflow (1) bootstrap (1) nuance (1) historia (1) dropbox (1) traefik (1) bug (1) akitando (1) llm (1) htm (1) transformers (1) cavalotroia (1) odd (1) m1 (1) Error (1) cinnamon (1) repmgr (1) federal (1) ruby (1) AppSec (1) orm (1) ArquiteturaDeSoftware (1) Passwordless (1) memcached (1) flow (1) compression (1) athena (1) Migration (1) workflow (1) cqrs (1) kitematic (1) geospacial (1) yeshua (1) data (1) sonarqube (1) Axios (1) pipelines (1) Mozilla (1) kvm (1) GitOps (1) sqlite (1) podcast (1) n8n (1) LaravelFilament (1) God (1) DesenvolvimentoProfissional (1) sw (1) bigtech (1) postgres (1) NoCookies (1) LeetCode (1) governancadedados (1) prf (1) nosql (1) Lideranca (1) Hackers (1) Bots (1) pytorch (1) nuxt (1) liquid (1) ec2 (1) transaction (1) c4 (1) rancher (1) algoritimo (1) Observability (1) Elasticsearch (1) translate (1) certbot (1) Oh My Zsh (1) ibm (1) escopos (1) usb (1) ckeditor (1) API_KEY_GOOGLE_MAPS (1) Manjaro (1) vicuna (1) coding (1) rust (1) markdown (1) JasperReports (1) Fibonacci (1) community (1) Samurai (1) payment (1) messaging (1) Jesus (1) flutter (1) militar (1) fullsta (1) smartphones (1) automacao (1) Monitor (1) zend (1) spaceship (1) PKCE (1) l2tp (1) Glacier (1) laraveloctane (1) Deus (1) binaural (1) gpt (1) bolsonaro (1) privacidade (1) linkedin (1) documentation (1) brain (1) adb (1) nvidia (1) host (1) ecommerce (1) c4-models (1) altadisponibilidade (1) octane (1) lucena (1) http (1) TypeScript (1) chatgpt (1) idiomas (1) eventdrive (1) uuid (1) restfull (1) aplicativo (1) optimization (1) mapas (1) Fetch (1) collections (1) RustLang (1) matematica (1) Filament (1) compactar (1) paypal (1) microg (1) forcas armadas (1) cor (1) auth (1) modelagemdedados (1) k8s (1) gasolina (1) wsl2 (1) csv (1) soap (1) piada (1) KubeCon (1) zorin-os (1) spring-boot (1) backup (1) playwright (1) Deepin (1) storage (1) benchmark (1) networking (1) Swoole (1) biologia (1) node-red (1) LETSENCRYPT (1) Grunt (1) Diagramas (1) boot (1) haru (1) dracula (1) TrabalhoEmEquipe (1) Brasil (1) queue (1) agi (1) llama (1) hotfix (1) economia (1) transcription (1) cache (1) Amazon (1) October (1) lumen (1) Hyperf (1) replication (1) faceapp (1) vala (1) cloudstack (1) rpi (1) apple (1) oracle (1) iode (1) ffaa (1) vpn (1) MeioAmbiente (1) firefox (1) composer (1) scheduling (1) Asahi (1) pendrive (1) microservice (1) front (1) OOD (0) controllers (0)

New Articles



Get Latest Updates by Email