Skip to content

bun test supporta diversi formati di output attraverso i reporter. Questo documento copre sia i reporter integrati che come implementare i tuoi reporter personalizzati.


Reporter Integrati ​

Reporter Console Predefinito ​

Di default, bun test emette i risultati sulla console in un formato leggibile dall'umano:

sh
test/package-json-lint.test.ts:
✓ test/package.json [0.88ms]
✓ test/js/third_party/grpc-js/package.json [0.18ms]
✓ test/js/third_party/svelte/package.json [0.21ms]
✓ test/js/third_party/express/package.json [1.05ms]

 4 pass
 0 fail
 4 expect() calls
Ran 4 tests in 1.44ms

Quando un terminale non supporta i colori, l'output evita i caratteri non-ascii:

sh
test/package-json-lint.test.ts:
(pass) test/package.json [0.48ms]
(pass) test/js/third_party/grpc-js/package.json [0.10ms]
(pass) test/js/third_party/svelte/package.json [0.04ms]
(pass) test/js/third_party/express/package.json [0.04ms]

 4 pass
 0 fail
 4 expect() calls
Ran 4 tests across 1 files. [0.66ms]

Reporter Dots ​

Il reporter dots mostra . per i test che passano e F per i fallimenti, utile per grandi suite di test.

sh
bun test --dots
bun test --reporter=dots

Reporter XML JUnit ​

Per gli ambienti CI/CD, Bun supporta la generazione di report JUnit XML. JUnit XML e un formato ampiamente adottato per i risultati dei test che puo essere parsato da molti sistemi CI/CD, inclusi GitLab, Jenkins e altri.

Usare il Reporter JUnit ​

Per generare un report XML JUnit, usa il flag --reporter=junit insieme a --reporter-outfile per specificare il file di output:

sh
bun test --reporter=junit --reporter-outfile=./junit.xml

Questo continuera a emettere output sulla console come al solito mentre scrive anche il report XML JUnit nel percorso specificato alla fine dell'esecuzione dei test.

Configurazione tramite bunfig.toml ​

Puoi anche configurare il reporter JUnit nel tuo file bunfig.toml:

bunfig.toml
toml
[test.reporter]
junit = "path/to/junit.xml"  # Percorso di output per il report XML JUnit

Variabili di Ambiente nei Report JUnit ​

Il reporter JUnit include automaticamente le informazioni sull'ambiente come <properties> nell'output XML. Questo puo essere utile per tracciare le esecuzioni dei test negli ambienti CI.

In particolare, include le seguenti variabili di ambiente quando disponibili:

Variabile di AmbienteNome ProprietaDescrizione
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URLciInformazioni build CI
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHAcommitIdentificatori commit Git
Hostname del sistemahostnameHostname della macchina

Questo rende piu facile tracciare quale ambiente e commit una particolare esecuzione di test riguardava.

Limitazioni Attuali ​

Il reporter JUnit ha attualmente alcune limitazioni che saranno affrontate in futuri aggiornamenti:

  • Gli output stdout e stderr dei singoli test non sono inclusi nel report
  • Campi timestamp precisi per ogni caso di test non sono inclusi

Reporter GitHub Actions ​

Bun test rileva automaticamente quando sta funzionando all'interno di GitHub Actions e emette annotazioni GitHub Actions direttamente sulla console. Non e necessaria alcuna configurazione speciale oltre a installare Bun ed eseguire bun test.

Per un esempio di configurazione del workflow GitHub Actions, vedi la sezione Integrazione CI/CD della documentazione CLI.


Reporter Personalizzati ​

Bun permette agli sviluppatori di implementare reporter di test personalizzati estendendo il WebKit Inspector Protocol con domini aggiuntivi specifici per i test.

Inspector Protocol per i Test ​

Per supportare il reporting dei test, Bun estende lo standard WebKit Inspector Protocol con due domini personalizzati:

  1. TestReporter: Riporta la scoperta, l'inizio e il completamento dei test
  2. LifecycleReporter: Riporta errori e eccezioni durante l'esecuzione dei test

Queste estensioni ti permettono di costruire strumenti di reporting personalizzati che possono ricevere informazioni dettagliate sull'esecuzione dei test in tempo reale.

Eventi Chiave ​

I reporter personalizzati possono ascoltare questi eventi chiave:

  • TestReporter.found: Emesso quando un test viene scoperto
  • TestReporter.start: Emesso quando un test inizia a essere eseguito
  • TestReporter.end: Emesso quando un test termina
  • Console.messageAdded: Emesso quando c'e output console durante un test
  • LifecycleReporter.error: Emesso quando si verifica un errore o un'eccezione

Bun a cura di www.bunjs.com.cn