Skip to content

Esta ferramenta pegará um arquivo js/ts como entrada e gerará um arquivo de teste unitário jest ao lado dele com todas as importações para cada método de classe e função exportados.

Notifications You must be signed in to change notification settings

ismaelalvesgit/test-gen

Repository files navigation

📦 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 .ts ou .js contendo 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 it dos 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 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.

✅ 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.

About

Esta ferramenta pegará um arquivo js/ts como entrada e gerará um arquivo de teste unitário jest ao lado dele com todas as importações para cada método de classe e função exportados.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published