Testes de arquitetura
Verificações automáticas que garantem que o código respeita as fronteiras de camadas e convenções do projeto (DDD na Prod-API, separação frontend/backend).
Objetivo
Falhar o build ou o pipeline quando:
- uma camada referencia outra que não deveria (ex.:
Production.Domaina importar EF ou controllers); - namespaces ou pastas violam a matriz de dependências acordada;
- novos padrões proibidos aparecem (ex.: acesso direto a
DbContextfora deProduction.Infra.Data).
Backend (.NET)
Ferramentas comuns:
- NetArchTest.Rules — regras declarativas em C# (“tipos em
Production.Domainnão devem depender deMicrosoft.EntityFrameworkCore”). - ArchUnitNET — estilo similar, com fluent API.
Exemplos de regras alinhadas ao AGENTS.md:
Production.Domainnão referenciaProduction.Infra.Data,Production.Application,Production.API.Production.Applicationnão referenciaDbContextnem pacotes EF.Production.APInão instancia repositórios concretos sem passar por DI dos serviços de aplicação.
Os testes ficam num projeto de testes (pode ser o existente Production.Domain.Tests ou um Production.Architecture.Tests dedicado) e executam com dotnet test.
Frontend
Opções complementares (menos padronizadas que no .NET):
- ESLint com
eslint-plugin-importe regrasno-restricted-importspara impedir imports de pastas internas (ex.: páginas a importarem diretamenteDbContextnão aplica — mas pode impedirpages/a importarem delegacy/). - dependency-cruiser para grafos e regras de arquitetura em JS/TS.
CI
- Executar testes de arquitetura na mesma etapa que
dotnet test(ou job dedicado rápido). - Falha deve citar a regra violada e o tipo ficheiro envolvido para correção rápida.
Adicione exemplos concretos de regras NetArchTest/ArchUnit quando o primeiro teste de arquitetura for integrado na solução.