2016-06-01 5 views
1

JUnit @Theoryでarroundを乱暴にしていて、それを無視するとassumeTrue(false)が理論instadに失敗することがわかります。JUnitの仮定が失敗する

このコードは、テストに失敗:

@RunWith(Theories.class) 
public class SnippetTest { 

    @Theory 
    public void validateIndices(){ 
     assumeTrue(false); 
    } 
} 

SnippetTest.validateIndicesは 方法仮定を満たしパラメータは見つかっていません。違反仮定:

をしかし、私はそれを無視仮定@Testを使用していたときに[org.junit.AssumptionViolatedExceptionは::偽は、予想:真 で得ました]。

public class SnippetTest { 

    @Test 
    public void validateIndices() { 
     assumeTrue(false); 
    } 
} 

Theories Documentationとは反論です。

いずれかの仮定が満たされない場合、データポイントは暗黙のうちに無視されます。

何が間違っているのですか?何が間違っていますか?

+2

私が知る限り、*データポイント*は理論ではなく無視されます。このような動作はうまくいきます。 –

+0

あなたは完全に正しいです。ありがとう! –

答えて

1

@TamasRevのおかげで、私は間違っていたことが分かりました。すべての仮定が失敗した場合、テストは失敗します。私が掲示した場合のIm、私はただ1つの仮定を持っています。 @DataPointsを使用しているとどうなりますか? この1つは、同様

@RunWith(Theories.class) 
public class SnippetTest { 

    @DataPoints 
    public static boolean[] data(){ 
     return new boolean[]{false, false}; 
    } 

    @Theory 
    public void validateIndices(boolean data){ 
     assumeTrue(data); 
     assertTrue(true); 
    } 
} 

を失敗したが、少なくとも1つの仮定が、その後合格した場合、テストは失敗していないとき。

@RunWith(Theories.class) 
public class SnippetTest { 

    @DataPoints 
    public static boolean[] data(){ 
     return new boolean[]{false, true}; 
    } 

    @Theory 
    public void validateIndices(boolean data){ 
     assumeTrue(data); 
     assertTrue(true); 
    } 
} 

Thanx @TamasRevは私を正しい方向に向けています。

関連する問題