2017-06-09 22 views
0

私はxquery Testframeworkをビルドしました。時には、ヘッダとインバウンドをテストしたい場合があります。JUnit4空のパラメータ化されたテスト

そこで私は4テストケースを持っている:

headerAndBody, 
headerAndBodyTestsuite, 
Header, 
HeaderTestsuite 

私はデータ用のディレクトリを検索してからテスターを構築します。

@Test 
    public void someTest() throws Exception{ 
      if (listHdrInbPayTestSuites.size() > 0) { 
       assertTrue(buildTest.testHdrInbPay(testSuiteIdentifier)); 

      } 
     } 

リストが空次のとおりです。

そして、ここではエラーです!でもJUnitはまだテストが2回実行されたと言います。それは空のテストだと言うためにそれを修正することはできますか?

編集:

@Parameter 
public String testSuiteIdentifier; (which actually has 2 items) 

編集:(。ワンテストスイートは、いくつかのテストケースを含めることができますので、私はテストスイート名によってそれらを識別したいので、私はちょうど、別のパラメータを取ることができないが) One Testsuite can contain several testcases, so I can't just take another parameter, because I want to identify them by Testsuite name.

一時的な解決策:

@Before 
    public void shouldRunTest() { 
     Assume.assumeTrue(listHeaderAndBodyTestSuites.size() > 0); 
    } 
は、これらのテストを無視する回避策を発見します

"テストをスキップしました"という情報が誤解を招く可能性があるため、私はこのソリューションに満足していません。

他のアプローチやアイデアはありますか?

答えて

0

JUnitは、空のテストの概念をサポートしていません。無視されたテストは、それに最も近いコンセプトです。

テスト数を増やさないためには、データ値がパラメータの一部でないことを確認する必要があります。つまり、@Parametersの方法で削除する必要があります。 Parameterizedランナーのドキュメントのフィボナッチテストの例のデータ値を削除する例を次に示します。

@Parameters 
public static Iterable<Object[]> data() { 
    Collection<Object[]> currentData = Arrays.asList(
     new Object[][] { 
      { 0, 0 }, 
      { 1, 1 }, 
      { 2, 1 }, 
      { 3, 2 }, 
      { 4, 3 }, 
      { 5, 5 }, 
      { 6, 8 } 
     } 
    ); 
    return currentData.stream() 
     .filter(dataSet -> dataSet[1] > 3) 
     .collect(Collectors.toList()); 
} 
関連する問題