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