2016-03-24 18 views
0

テストを生成して実行することは可能ですか?Geb JUnit4自動生成テスト

404ページとその他のテストを指しているかどうか確認したいURLのリスト。私は、各リンクごとに別々のテストを作成したくありません。それはたくさんの仕事になります。

可能でない場合は、テストから別のテストを指し示すことは可能ですか?別のテストが失敗した場合は、最初のテストを続行しますか?

私のテストでは、Gebish、Gradle、JUnit4でGroovyを使用しています。

答えて

1

あなたが探しているものはparameterizedテスト、テストは生成されていないと思います。私があなたを正しく理解していれば、同じのテストをたくさんの「もの」のテストに使いたいと思っています。

パラメータ化されたテストでは、データを返す静的メソッドを宣言してから、Parameterizedランナーを使用してテストを実行するようにJUnitに指示します。次に、各テストクラスは、テストメソッドがアクセスできるテストデータとして引数を使用してインスタンス化されます。

@RunWith(Parameterized.class) 
public class FibonacciTest { 
    @Parameters 
    public static Collection<Object[]> data() { 
     return Arrays.asList(new Object[][] {  
       { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } 
      }); 
    } 

    private int fInput; 
    private int fExpected; 

    public FibonacciTest(int input, int expected) { 
     fInput= input; 
     fExpected= expected; 
    } 

    @Test 
    public void test() { 
     assertEquals(fExpected, Fibonacci.compute(fInput)); 
    } 
} 

別のアプローチは、theoriesです。理論では、テストクラスにテストデータを@Datapointでアノテーションされた異なる静的フィールドとして埋め込み、各テストメソッドが各データポイントに対して繰り返し呼び出され、特定のデータポイントが引数として渡されます。ここでも、あなたはまた、あなたの人生がずっと楽にして使用することがあります...

@RunWith(Theories.class) 
public class UserTest { 
    @DataPoint 
    public static String GOOD_USERNAME = "optimus"; 
    @DataPoint 
    public static String USERNAME_WITH_SLASH = "optimus/prime"; 

    @Theory 
    public void filenameIncludesUsername(String username) { 
     assumeThat(username, not(containsString("/"))); 
     assertThat(new User(username).configFileName(), containsString(username)); 
    } 
} 
+0

をそれを実現するための特別なランナーを持っている[スポック](https://github.com/spockframework/spock)と[テストパラメータ化のサポート](http://spockframework.github.io/spock/docs/1.0/data_driven_testing.html)を参照してください。 – erdi

関連する問題