2016-06-01 10 views
1

Ich war mit JUnit @Theory herumspielen und finden Sie heraus, dass assumeTrue(false) die Theorie instrad versagt, wenn es ignoriert.JUnit Annahmen fehlschlagen Theorien

Dieser Code nicht den Test:

@RunWith(Theories.class) 
public class SnippetTest { 

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

SnippetTest.validateIndices Nie Parameter gefunden, die Methode Annahmen erfüllt. Violated Annahmen: [org.junit.AssumptionViolatedException: got: false, erwartet: ist true]

Aber wenn ich verwende @Test Annahme ignorieren.

public class SnippetTest { 

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

Es ist contraversial mit Theories Documentation.

Wenn eine der Annahmen fehlschlägt, wird der Datenpunkt automatisch ignoriert.

Was vermisse ich oder was mache ich falsch?

+2

Soweit ich das beurteilen kann, wird der * Datenpunkt * ignoriert, nicht die Theorie. Sieht so aus, als ob dieses Verhalten in Ordnung ist. –

+0

Sie sind völlig richtig. Danke! –

Antwort

1

Dank @TamasRev Kommentar fand ich, was falsch lief. Sieht so aus, es wird den Test nicht bestehen, falls die ganze Annahme fehlschlägt. In dem Fall, den ich gepostet habe, habe ich nur eine Annahme. Was passiert, wenn ich @DataPoints verwende? Dieser scheitert auch

@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); 
    } 
} 

Aber wenn, wenn mindestens eine Annahme passieren dann ist Test nicht fehlgeschlagen.

Danke @TamasRev für mich in richtige Richtung.

Verwandte Themen