GNU/Linux >> Znalost Linux >  >> Linux

Unit testování pro shell skripty

AKTUALIZACE 2019-03-01:Moje preference jsou nyní netopýři. Používám ho několik let na malých projektech. Líbí se mi čistá, stručná syntaxe. Neintegroval jsem jej do rámců CI/CD, ale jeho výstupní stav odráží celkový úspěch/selhání sady, což je lepší než shunit2, jak je popsáno níže.

PŘEDCHOZÍ ODPOVĚĎ:

Používám shunit2 pro skripty shellu související s webovou aplikací Java/Ruby v prostředí Linuxu. Jeho použití bylo snadné a nepředstavovalo žádnou velkou odchylku od ostatních xUnit frameworků.

Nezkoušel jsem integraci s CruiseControl nebo Hudson/Jenkins, ale při implementaci nepřetržité integrace jinými prostředky jsem narazil na tyto problémy:

  • Stav ukončení:Když testovací sada selže, shunit2 nepoužívá ke sdělení selhání nenulový stav ukončení. Takže musíte buď analyzovat výstup shunit2, abyste určili, zda sada vyhovuje/nevyhovuje, nebo změnit shunit2 tak, aby se choval tak, jak očekávají některé rámce pro kontinuální integraci, a komunikuje s vyhověním/neúspěchem prostřednictvím stavu ukončení.
  • Protokoly XML:shunit2 nevytváří protokol výsledků XML ve stylu JUnit.

Zajímalo by mě, proč se nikdo nezmínil o BATS. Je aktuální a kompatibilní s TAP.

Popište:

#!/usr/bin/env bats

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

Spustit:

$ bats addition.bats
 ✓ addition using bc

1 tests, 0 failures

Linux
  1. Co pro vás může udělat shell dotfile

  2. Transliterační skript pro linuxové prostředí

  3. Proč je SUID zakázáno pro skripty prostředí, ale ne pro binární soubory?

  1. Použití Bash pro automatizaci

  2. Existují konvence pojmenování proměnných ve skriptech Shell?

  3. Asociativní pole ve skriptech Shell?

  1. Povolit skripty Setuid On Shell?

  2. Testování rybí skořápky na existenci souboru v $path?

  3. Rozšíření souborů pro skripty Unix Shell?