Javaのデータ駆動型統合テストツール
-
28-10-2019 - |
質問
私はよくあることだと思うことに直面していますが、それに対処するための多くの議論や既存のツールは見つかりませんでした。標準化されたJUNITクラスから実行できるQAの入力データと予想結果の提出(理想的には)の提出をサポートする統合テストシステム(すでに強力なユニットテストのスイートを既に持っている)を設定しようとしています。
Junitを使用してここで自分で転がす計画があります @Paramaterized
注釈。私は、各データのセットと結果をコントロールファイルを持つことを想像し、すべての制御ファイルが1つのディレクトリに配置されています。パラメータージェネレーターメソッドは、このディレクトリをスキャンし、これらのファイルのリストを返します。テストコンストラクターはこのファイルを読み取り、入力データと予想される結果を設定します。
これを書き始める前に、このタイプのことをするためのツールが既に存在しているかどうかを確認したかったのですが、そうでない場合は、私が提案している解決策について意見を聞きました。
アプリケーション自体は、純粋にバックエンドETLタイプツールであり、さまざまな形式でいくつかの入力ファイルからデータを取得し、データベースで結果を生成します。メモリデータベースでダービーを使用して些細な入力データの結果を確認する静的統合テストがすでにいくつかあります。ここでデータを確認するために同様のシステムを使用する予定です。予想される結果はの形であります (key_value, column, expected value)
トリプル。 Junitを使用して、残りのテストと結果の報告インフラストラクチャに結び付けたいと思います。
解決
見て スポック, 、データ駆動型のテストを強力にサポートするグルーヴィーベースのテストフレームワーク。 SpockはJava(およびGroovy)コードをテストするために設計されており、Junitと完全に互換性があります(実際、SpockテストはJunitで実行されます)。見る ここ データベースからデータを取得する簡単なテストの場合。
一般的に、あなたの計画は私にとって合理的に聞こえますが、Plain Junitと@Parameterizedで実現することもできます。スポックとグルーヴィーはあなたの人生を楽にすることができます。たとえば、テキストファイルやデータベースを操作することは、JavaよりもGroovyの方がはるかに簡単です。
免責事項:私はスポックの作成者です。
他のヒント
私は自分自身をスポックするのが好きです。しかし、私は、ストレートJunitパラメーター化されたテストよりもはるかに読みやすいJunitparamsフレームワークがそこにあることを確認します。
https://github.com/pragmatists/junitparams
素晴らしい説明は次のとおりです。
https://weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java
この質問をしている他の人のために....