3

私たちには、Bourne、Python、Perlの実行可能スクリプトだけでなく、PythonパッケージとScalaパッケージのライブラリが含まれています。ライブラリにはテストカバレッジがありますが、スクリプトに関するテストはありません。Jenkinsのスクリプト/実行ファイルをテストする標準的な方法はありますか?

現在のテスト環境では、Jenkins、Python、virtualenv、nose、Scala、およびsbtが使用されています。

ジェンキンスのスクリプトのテストを組み込む標準的な方法はありますか?


編集:

assertEquals expected.txt commandline 
assertError commandline --bogus 
assertStatus 11 commandline baddata.in 
+0

これらのスクリプトに関する詳細は?彼らは環境に敏感ですか? (すなわち、サーバへのHTTP要求を行い、特定の場所にファイルを必要とするなど)。 – sethcall

+0

@sethcall良い質問です。テストデータ、いくつかのデータベース、httpリクエスト、および(現在は環境変数によって参照される)別の社内プロジェクトにさまざまに依存する多くのスクリプトがあります。これらのテストに十分な環境を作り出すことができます。 – Reece

答えて

1

私はこれがどのように「標準」を知りませんが、あなたが本当にTDDを実践した場合:私はこのように、Pythonのunittestのシェルスクリプトのような単純な何かを望んでいますあなたのスクリプトもTDDで開発する必要があります。どのようにJenkinsとTDDテストを接続するかは、使用しているTDDフレームワークによって決まります。例えば、Jenkinsが読むことができるJUnitレポートや、失敗したステータスなどを返すことができます。

+0

これはまさに質問です。スクリプト用にTDDを有効にするためにJenkinsを使用したいと思います。言語には、フレームワークがあります。コマンドラインのフレームワークはありますか? – Reece

+1

私は非常に少数のコマンドラインスクリプトを使用していますが(ANT ant Pythonにほとんど依存しています)、すべての価値があります。[ウィキペディアはこれについて何を言いますか?](http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#Shell)。 –

+0

ありがとう@malenkiy_scot ...ウィキペディアのページには良いサマリーがあります。多くの検索でそのページが表示されなかったとは思えません。 – Reece

0

スクリプトに必要な別のプロジェクトでは、私の傾向は、新しいシステムを作ることです。例えば、 'system-qa'。

これは、pythonプロジェクトの下流のプロジェクトであり、pythonプロジェクトと社内プロジェクトに依存します。

依存性解決/パブリッシング技術を使用している場合は、apache ivy http://ant.apache.org/ivy/、これらの既存のプロジェクトがパッケージ化されたバージョンのコードを公開する場合は(.tar .gz、おそらく)システム-qaプロジェクトは、Pythonパッケージと社内プロジェクトパッケージの両方に依存関係を宣言し(ivyを使用して)、ivyを使用してダウンロードし、抽出/インストールし、テストを実行して終了することができます。

要約すると、system-qaプロジェクトのビルドスクリプトは、依存関係の取得、それらの依存関係に対するテストの実行、junit xmlのような標準化された出力テスト形式の公開を担当します(ただし、どのように建てられたかについてジェンキンスを手がかりに)

私はこれが技術的に正しいソリューションだと思いますが、多くの作業もあります。それが価値がある場合、判断のためのコールが必要です。

+0

プロジェクト間のプロジェクト成果物の移動にapache ivyを使用することの明確化。 1つのビルドドローンと1つのアクティブなバージョンのこれらのプロジェクトだけを持っているなら、簡単な前提を作ることができます。 ivyを使用する代わりに/ home/jenkinsbuild/workspace/inhouse-projectに指定した環境変数を設定するだけです。 – sethcall

3

は、あなたがshunit2見てきました:http://code.google.com/p/shunit2/

それはあなたがボーンは、bashまたはkshスクリプトでテスト可能なシェルスクリプトを書くことができます。

あなたが説明しているものにどのように組み込むことができるかはわかりませんが、他の単体テストスイートと同様の出力を生成します。

+0

ありがとうKevin。私が尋ねた時点ではそれについてはわかりませんでしたが、私はmalenkiy_scotが提供したリンクWikipediaのリンクから見つけました。 shunit2はまさに私が探していたものです。 – Reece

関連する問題