GNU/Linux >> Linux の 問題 >  >> Linux

シェル スクリプトの単体テスト

UPDATE 2019-03-01:私の好みはコウモリです。私は小さなプロジェクトで数年間それを使用しました。クリーンで簡潔な構文が気に入っています。私はそれを CI/CD フレームワークと統合していませんが、その終了ステータスはスイートの全体的な成功/失敗を反映しており、以下で説明する shunit2 よりも優れています.

前の回答:

Linux 環境で Java/Ruby Web アプリケーションに関連するシェル スクリプトに shunit2 を使用しています。使いやすく、他の xUnit フレームワークと大きな違いはありません。

CruiseControl や Hudson/Jenkins との統合は試していませんが、他の方法で継続的統合を実装する際に、次の問題に遭遇しました:

  • 終了ステータス:テスト スイートが失敗した場合、shunit2 はゼロ以外の終了ステータスを使用して失敗を通知しません。そのため、shunit2 の出力を解析してスイートの合否を判断するか、一部の継続的インテグレーション フレームワークが期待するように shunit2 を変更して、終了ステータスを介して合否を伝える必要があります。
  • XML ログ:shunit2 は結果の JUnit スタイルの XML ログを生成しません。

なぜ誰もBATSについて言及しなかったのか疑問に思います。これは最新で、TAP に準拠しています。

説明:

#!/usr/bin/env bats

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

実行:

$ bats addition.bats
 ✓ addition using bc

1 tests, 0 failures

Linux
  1. セキュリティテスト用の人気のあるLinuxディストリビューション

  2. シェルスクリプトの変数の命名規則はありますか?

  3. シェルスクリプトの連想配列?

  1. シェルスクリプトの正しいロック?

  2. Scp用のシェルが必要ですか?

  3. Unixシェルスクリプトのファイル拡張子?

  1. シェルスクリプトのPosixコンプライアンスをテストする方法は?

  2. スクリプト内の bash シェル スクリプトおよび関数の変数スコープ

  3. シェル スクリプトでは SUID が無効になっているのに、バイナリでは無効になっているのはなぜですか?