GNU/Linux >> Linux Esercitazione >  >> Linux

Unit test per script di shell

AGGIORNAMENTO 01-03-2019:ora preferisco i pipistrelli. L'ho usato per alcuni anni su piccoli progetti. Mi piace la sintassi pulita e concisa. Non l'ho integrato con i framework CI/CD, ma il suo stato di uscita riflette il successo/fallimento complessivo della suite, che è migliore di shunit2 come descritto di seguito.

RISPOSTA PRECEDENTE:

Sto usando shunit2 per gli script di shell relativi a un'applicazione Web Java/Ruby in un ambiente Linux. È stato facile da usare e non si discosta molto dagli altri framework xUnit.

Non ho provato l'integrazione con CruiseControl o Hudson/Jenkins, ma implementando l'integrazione continua tramite altri mezzi ho riscontrato questi problemi:

  • Stato di uscita:quando una suite di test fallisce, shunit2 non usa uno stato di uscita diverso da zero per comunicare l'errore. Quindi devi analizzare l'output di shunit2 per determinare l'esito positivo/negativo di una suite o modificare shunit2 in modo che si comporti come previsto da alcuni framework di integrazione continua, comunicando l'esito positivo/negativo tramite lo stato di uscita.
  • Log XML:shunit2 non produce un log XML dei risultati in stile JUnit.

Mi chiedo perché nessuno abbia menzionato BATS. È aggiornato e conforme a TAP.

Descrivi:

#!/usr/bin/env bats

@test "addition using bc" {
  result="$(echo 2+2 | bc)"
  [ "$result" -eq 4 ]
}

Esegui:

$ bats addition.bats
 ✓ addition using bc

1 tests, 0 failures

Linux
  1. Cosa può fare per te un file dot di shell

  2. Distribuzioni Linux popolari per i test di sicurezza

  3. Hai bisogno di una shell per Scp?

  4. Estensioni di file per script di shell Unix?

  5. Come verificare la conformità a Posix degli script della shell?

Script di shell per principianti - Come scrivere script Bash in Linux

Array negli script di shell

Come utilizzare if-else negli script della shell?

Comprendere il ciclo for negli script della shell

Il ciclo while negli script della shell

Script di traslitterazione per shell linux