2009-05-27 11 views
1

私はJUnitの中にパラメータ化されたテストの使用に慣れてるテスト:ソリューションは、例えば、

http://junit.org/apidocs/org/junit/runners/Parameterized.html

が、私は(おそらくより良い)任意の代替は、外部からのテストデータを定義したために近づいていたかどうかを疑問に思いました。自分のテストデータをソースファイルにハードコードしたくないのですが、XMLやその他の構造化された方法で定義したいと思っています。

標準的なJUnitアプローチよりも優れたソリューションを提供するフレームワークの特別なフレームワークまたは拡張機能がありますか?あなたがこれまでに見つけた最良のアプローチは何でしたか?

編集:私はFITフレームワークとこの場合の使用に精通しており、可能ならばそれを避けたいと思います。 TestNGよりも優れたソリューションを提供するJUnit拡張モジュールや同様のフレームワークがある場合は、私に知らせてください。

答えて

1

だから私は、ここでより多くの情報が利用可能に、あなたがテストのためのパラメータを指定することを可能にする、これにTestNGのアプローチを見つけた:

http://testng.org/doc/documentation-main.html#parameters-testng-xml

この例を次のようになります。

@Parameters({ "first-name" }) 
@Test 
public void testSingleString(String firstName) { 
    System.out.println("Invoked testString " + firstName); 
    assert "Cedric".equals(firstName); 
} 

と:

<suite name="My suite"> 
    <parameter name="first-name" value="Cedric"/> 
    <test name="Simple example"> 

また、ソース(Apache Derbyなど)を使ってこのテストデータを指定すると、これはどれほどの柔軟性があるのでしょうか。

1

これにはDependency Injection or Inversion of Controlを試すことができます。 Spring Frameworkがこれを行います。

+0

"ベスト"は意見です。 Google Guiceも非常にうまく機能します。 –

+0

これはどのようにパラメータ化されたテストデータで私を助けますか? – Jon

+0

私はSpringがここで助けているかどうかは分かりませんが、ユニット/統合テストは緩和されますが、テスト用のパラメータ化されたデータは考慮されていません。これを達成するために私のアプリケーションにSpringを落とすのはちょっと残酷すぎるようです。とにかく多くのありがとう。 – Jon

0

パラメータ化されたテスト例では、クラス自体にデータを格納する必要があります。 xmlファイルからデータを取り出し、Object [] []を返し、例では静的コードを使用する場所を呼び出します。もちろん、TestNGを切り替える場合は、すでにXMLパーサーが記述されています。 JUnitExtのようにJUnit 4にも同じように見えるか、自分で書くことができます。