0

検索クエリのリストと期待される結果が記載されたテキスト ファイルがあります。そのような、

検索結果

a:120         result1
b:220         result2
.....
.....

ここで、各行が 1 つの@Test method. これにより、どの検索ケースが失敗したか (UI) がわかります。

@Test メソッドが 1 つしかないソリューションが既にあり、どのケースが成功したか失敗したかを確認するためのログがあります。

ただし、junit メソッドとして表されるケースごとに達成しようとしています。@Test メソッドを JUnit アーキテクチャに動的に作成することは本当に可能ですか。

私たちの @Test メソッドは、すべての検索ケースで同じです。つまり、毎回異なるパラメーターを渡したいだけです。

私の問題に対する JUnit3 ソリューションを思い付きました。Junit4 に翻訳するには助けが必要です。

public static Test suite()
   {
      TestSuite suite = new TestSuite();
      for ( int i = 1; i <= 5; i++ ) {

         final int j = i;
         suite.addTest(
            new Test1( "testQuery" + i ) {
               protected void runTest()
               {
                  try {
                     testQuery( j );
                  } catch ( MalformedURLException e ) {

                     // TODO Auto-generated catch block
                     e.printStackTrace();
                  } catch ( SolrServerException e ) {

                     // TODO Auto-generated catch block
                     e.printStackTrace();
                  }
               }
            }
            );
      }

      return suite;
   }
4

1 に答える 1

3

JUnit 4 には、まさにこれに使用される「パラメータ化されたテスト」と呼ばれる概念があります。

上記のテストを完全には理解していませんが、これはヒントになるはずです:

@RunWith(Parameterized.class)
public class ParameterizedTest {

    private String query;
    private String expectedResult;

    public ParameterizedTest(String query, String expectedResult) {
        this.query = datum;
        this.expectedResult = expectedResult;
    }

    @Parameters
    public static Collection<Object[]> generateData() {
        Object[][] data = {
                { "a:120", "result1" },
                { "b:220", "result2" },
        };
        return Arrays.asList(data);
    }

    @Test
    public void checkQueryResult() {
        System.out.println("Checking that the resutl for query " + query + " is " + expectedResult);
        // ...
    }

}
于 2013-01-30T18:35:38.760 に答える