-
Notifications
You must be signed in to change notification settings - Fork 0
Testes
github-actions[bot] edited this page Sep 4, 2026
·
2 revisions
Visão geral dos testes da extensão e como executá-los.
| Tipo | Runner | Localização | Requer banco? |
|---|---|---|---|
| Unitários | node --test |
src/test/unit/ |
Não |
| Integração | @vscode/test-cli |
src/test/integration/ |
Opcional (com .env) |
Testam módulos puros (sem dependência de vscode) — a lista completa de
arquivos compilados:
src/test/unit/ (origem TypeScript; execução em out/test/unit/)
├── cli.test.ts ├── invocation.test.ts
├── cliEncoding.test.ts ├── junit.test.ts
├── cliInfo.test.ts ├── matching.test.ts
├── cliReporters.test.ts ├── oracleRunner.test.ts
├── cobertura.test.ts ├── quickfix.test.ts
├── codelens.test.ts ├── rerun.test.ts
├── compilationDiagnostics.test.ts ├── results.test.ts
├── config.test.ts ├── runner.test.ts
├── coverage.test.ts ├── state.test.ts
├── decorations.test.ts ├── statusBar.test.ts
├── discovery.test.ts └── suiteParser.test.ts
Há também cobertura TypeScript com c8:
npm run test:coverage # thresholds: 65% lines/statements, 80% branches, 70% functions- Crie
src/test/unit/meu_modulo.test.ts:
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { minhaFuncao } from '../../meu_modulo.js';
describe('minhaFunca', () => {
it('retorna x para entrada y', () => {
assert.strictEqual(minhaFunca('y'), 'x');
});
it('lança erro para entrada inválida', () => {
assert.throws(() => minhaFunca(null));
});
});- Se o teste usa módulos vscode-dependentes, adicione na primeira linha:
import './setup.js'; // redireciona require('vscode') → stub# Todos
npm test
# Arquivo específico
node --test out/test/unit/junit.test.js
# Por padrão de nome
node --test --test-name-pattern "parse" out/test/unit/**/*.test.js
node --test <diretório>falha (tenta carregar a pasta como módulo). Sempre use o globout/test/unit/**/*.test.js. Compile antes (npm run compile).
Testam a extensão dentro de uma instância real do VSCode:
src/test/integration/
└── extension.test.ts
Os testes de integração têm dois modos:
- Sem banco: testam discovery, comandos, UI — não precisam de Oracle
-
Com banco (
describeDB): testam execução real, cobertura, reporters — requerem Oracle + variáveis de ambiente
Crie um arquivo .env na raiz:
UTPLSQL_CONN=UT3/senha@//localhost:1521/XEPDB1
UTPLSQL_CLI_PATH=/home/user/utplsql-cli/bin/utplsql
UTPLSQL_CLI_HOME=/home/user/utplsql-cliOs testes com banco usam um schema de teste com packages de exemplo:
src/test/integration/fixtures/
├── setup.sh ← script de configuração do ambiente
├── setup.sql ← criação do schema + grants (idempotente)
├── compile_packages.sql ← compilação dos packages de teste
├── settings.example.json ← exemplo de settings para o workspace
├── test_betwnvarchar.pks ← suite de exemplo 1
├── test_calculator.pks/.sql ← suite + objeto de produção
├── test_employees.pks ← suite de exemplo 3
├── test_math.pks ← suite de exemplo 4
└── test_math_fail.pks ← suite com falha proposital
npm run test:integrationMódulos que dependem de vscode usam src/test/vscode-stub.ts — um mock
completo das APIs do VSCode (TestController, TestRun, workspace, etc.).
O stub é carregado de duas formas:
-
import './setup.js'no topo do arquivo de teste (explícito) -
--require scripts/test-setup.cjsno runner global (rede de segurança)
- Getting Started
- Usage
- Advanced Tools
- Reference
- Development
- Help