質問

jUnitでデータ駆動型テストを記述するために何を使用しますか?

(私の定義)データ駆動型テストは、外部ソース(ファイル、データベースなど)からデータを読み取り、行/ファイル/何でも1つのテストを実行し、テストで結果を表示するテストです。個別のテストがあるかのようにランナー-各実行の結果は、1つの巨大な集合ではなく、個別に表示されます。

役に立ちましたか?

解決

JUnit4では、パラメーター化テストランナーを使用してデータ駆動を行うことができますテスト。

あまり文書化されていませんが、基本的な考え方は、オブジェクト配列のコレクションを返す静的メソッド( @Parameters アノテーション付き)を作成することです。これらの各配列はテストクラスコンストラクターの引数として使用され、コンストラクターで設定されたフィールドを使用して通常のテストメソッドを実行できます。

@Parameters メソッドで外部テキストファイルを読み取って解析する(または別の外部ソースからデータを取得する)コードを作成し、編集することで新しいテストを追加できますテストを再コンパイルせずにこのファイル。

他のヒント

これは、@ DataSourceを備えたTestNGが輝く場所です。それが私がJUnitを好む理由の1つです。その他は依存関係と並列スレッドテストです。

hsqldb などのメモリ内データベースを使用して、データベースに&quotを事前に入力できるようにします;生産スタイル"データのセット、または空のhsqldbデータベースから開始し、テストを実行する必要がある行をそのデータベースに追加できます。さらに、 JUnit Mockito

dbUnit jMock およびjUnit4。その後、スイートとしてまたは個別に実行できます

「DataDrivenTestCase」でTestCaseを拡張した方が良いでしょう。それはあなたのニーズに合っています。 これが実際の例です: http://mrlalonde.blogspot.ca/2012/08 /data-driven-tests-with-junit.html

パラメータ化されたテストとは異なり、適切な名前のテストケースが可能です。

@ DroidIn.netを使用しています。これはまさに私が行っていることです。ただし、質問に文字通り回答し、「テストランナーに個別のテストがあるかのように結果を表示する」ためです。 JUnit4 Parameterizedランナーを確認する必要があります。 DBUnitはそれを行いません。これをたくさんしなければならない場合、正直なところTestNGはより柔軟ですが、JUnitで完全に実行できます。

JUnit Theoriesランナーも見ることができますが、私の思い出としては、データ駆動型のデータセットには向いていないということです。これは、JUnitが大量の外部データを扱うことを目的としていないためです。 >

これは非常に古いトピックですが、私はまだ自分のシェアを提供することを考えました。 データ駆動型テストに対するJUnitのサポートは、あまりフレンドリーではないと感じています。例えばパラメーター化を使用するには、コンストラクターを記述する必要があります。 Theories runnerでは、テストメソッドに渡されるテストデータのセットを制御できません。

このブログ投稿シリーズで特定されているより多くの欠点があります: http://www.kumaranuj.com/2012/08/junits-parameterized-runner-and-data.html

JUnitから拡張されたフレームワークであり、ユーザーに多くの機能を提供することを目的としたEasyTestの形式で、非常にうまく機能する包括的なソリューションがあります。その主な焦点は、JUnitを使用してデータドリブンテストを実行することですが、JUnitに実際に依存する必要はもうありません。参照用のgithubプロジェクトは次のとおりです。 https://github.com/anujgandharv/easytest

誰かが自分の考え/コード/提案に貢献することに興味があるなら、今がその時です。 githubリポジトリに移動して問題を作成するだけです。

通常、データ駆動型テストでは、テスト可能な小さなコンポーネントを使用してデータを処理します。 (ファイル読み取りオブジェクト、またはモックオブジェクト)データベースの場合、アプリケーション外のリソースは他のシステムを模倣するために使用されます。 (Webサービス、データベースなど)。通常、データと出力を処理する外部データファイルがあることを確認します。これにより、データファイルをVCSに追加できます。

現在、ID番号を含むpropsファイルがあります。これは恐ろしくもろいですが、何かを始めるのは簡単です。私たちの計画では、最初にこれらのID番号を、Antビルドの-Dプロパティでオーバーライドできるようにします。

私たちの環境では、実行前にロードできない恐ろしく絡み合ったデータを持つレガシーDBを使用します(たとえば、dbUnitによって)。最終的には、単体テストでDBにクエリを実行してテスト対象のプロパティを持つIDを見つけ、そのIDを単体テストで使用する場所に到達したいと考えています。速度は遅く、「ユニットテスト」ではなく統合テストと呼ばれますが、実際のデータに対してテストすることで、テストデータに対してアプリが完全に実行されるが実際のデータでは失敗する状況を回避します。

一部のテストは、インターフェイス駆動に役立ちます。

データベース/ファイルの読み取りがインターフェイスコールによって取得される場合、ユニットテストを取得してインターフェイスを実装するだけで、ユニットテストクラスは必要なデータを返すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top