@ismaelalves/test-gen v0.1.0
📦 TestGen
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.
✨ Objetivo
Simplificar a criação de instâncias para testes sem precisar configurar manualmente mocks e instâncias para cada dependência.
✨ Visão Geral
- Linguagem: TypeScript | Javascript
- Finalidade: Geração de testes automáticos com base em metainformações das classes e/ou funções.
- Entrada: Arquivos
.tsou.jscontendo classes e/ou funções - Saída: Estruturas de teste baseadas nas dependências das classes ou de funções
✨ Funcionalidades
- 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
itdos testes por meio de Decorators, Anotações e Comentários
🚀 Roadmap Futuro
- 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
🌐 Estrutura do Projeto
.
├── 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📂 Estrutura dos Arquivos
src/analyzer/analyzerCode.ts
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.
src/analyzer/fileScanner.ts
Identifica os arquivos TypeScript e Javascript do projeto.
src/generator/testWriter.ts
Gera strings de construtores para classes, resolvendo dependências automaticamente. Usa cache para não repetir processamento. Escreve o arquivo de test
src/generator/mockGenerator.ts.ts
Retorna valores mockados com base em tipos básicos:
getMockForType('number') // 0
getMockForType('string') // ""🔧 Exemplo de Classe
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)⚙️ Instalação
npm install @ismaelalvesgit/test-gen -D
ou
npm install @ismaelalvesgit/test-gen -g✈️ Executando
npx test-gen
ou
test-gen # Caso tenha optado pela instalação global🔍 Observações
- A resolução é feita com
Observablesdo 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.
✅ Quando usar?
- 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.
⚖️ Tecnologias Usadas
- TypeScript
- ts-morph: manipulação de AST
- rxjs: para resolver dependências reativas
- ts-node: execução direta de arquivos TypeScript
🔗 Contribuições
Sinta-se livre para abrir issues ou PRs com melhorias, ideias ou bugs.
🌟 Autor
Desenvolvido por Ismael alves com amor pela automação de testes.
6 months ago