TestGen é uma biblioteca TypeScript e Javascript voltada para geração automática de testes baseada na estrutura de classes e suas dependências. A seguir está um guia simples e direto para entender e utilizar a biblioteca.
Simplificar a criação de instâncias para testes sem precisar configurar manualmente mocks e instâncias para cada dependência.
- Linguagem: TypeScript | Javascript
- Finalidade: Geração de testes automáticos com base em metainformações das classes e/ou funções.
- Entrada: Arquivos
.ts
ou.js
contendo classes e/ou funções - Saída: Estruturas de teste baseadas nas dependências das classes ou de funções
- Escaneamento de arquivos através da manipulação de AST (Abstract Syntax Tree)
- Configuração de execução por meio CLI, .TestGenrc, package.json
- Aceitamos analize de arquivos TypeScript | Javascript
- Geração de testes automáticos com base em metainformações das classes e/ou funções.
- Analise de alterações de metodos e/ou funções para geração de novos testes
- Saida de arquivo formatado pelo prettier.js
- Valores de argumentos de metodos e/ou funções gerados randomicamente atraves do chance.js
- Criação de casos de testes para cenários 😇|😈
- Configuração de
it
dos testes por meio de Decorators, Anotações e Comentários
- Suporte para DI frameworks (como Nest.js)
- Integração com IA´s para assertivas mais robustas para cenários 😇|😈
- Suporte para os motores de teste mocha.js e vitest.js
.
├── bin/ # Ponto de entrada da CLI
├── examples/ # Exemplos de uso
├── src/ # Código-fonte principal da biblioteca
│ ├── analyzer/ # Escanea os arquivos por meio de manipulação AST
│ ├── generator/ # Geração de código de teste
│ ├── utils/ # Funções auxiliares
├── types/ # Definição de tipos e interfaces
├── package.json # Configurações do projeto e dependências
├── tsconfig.json # Configuração TypeScript
Analisa arquivos TypeScript e Javascript e retorna classes e funções exportadas com seus parâmetros e dependências por meio de anipulação ATS.
Identifica os arquivos TypeScript e Javascript do projeto.
Gera strings de construtores para classes, resolvendo dependências automaticamente. Usa cache para não repetir processamento. Escreve o arquivo de test
Retorna valores mockados com base em tipos básicos:
getMockForType('number') // 0
getMockForType('string') // ""
export class Service {
constructor(
private readonly repo: Repository,
private readonly logger: Logger,
private readonly count: number
) {}
}
Geração automática:
new Service(new Repository(), new Logger(), 0)
npm install @ismaelalvesgit/test-gen -D
ou
npm install @ismaelalvesgit/test-gen -g
npx test-gen
ou
test-gen # Caso tenha optado pela instalação global
- A resolução é feita com
Observables
do RxJS. - Dependências são resolvidas recursivamente com base na árvore de dependências da classe.
- O cache evita reconstruções desnecessárias.
- Ideal para testes automatizados com mockagem de dependências.
- Testes automatizados em projetos TypeScript e Javascript.
- Geração dinâmica de instâncias de classes complexas.
- Situações onde você precisa mockar dependências profundamente.
- TypeScript
- ts-morph: manipulação de AST
- rxjs: para resolver dependências reativas
- ts-node: execução direta de arquivos TypeScript
Sinta-se livre para abrir issues ou PRs com melhorias, ideias ou bugs.
Desenvolvido por Ismael alves com amor pela automação de testes.