JUnit假设失败了理论

时间:2016-06-01 15:29:47

标签: java junit junit4

我正在使用JUnit @Theory搞乱,并发现如果忽略它,assumeTrue(false)会失败理论。

此代码未通过测试:

@RunWith(Theories.class)
public class SnippetTest {

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

SnippetTest.validateIndices从未找到满足的参数   方法假设。违反假设:   [org.junit.AssumptionViolatedException:got:false,expected:is   真]

但是当我使用@Test时,忽略它。

public class SnippetTest {

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

Theories Documentation相反。

  

如果任何假设失败,则会默默忽略数据点。

我错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:2)

感谢@TamasRev评论我发现了什么问题。看起来,如果所有假设都失败,它将无法通过测试。我发布的情况就是这样,我只有一个假设。 如果我使用@DataPoints,会发生什么? 这个也失败了

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

但是,如果至少有一个假设通过,则测试不会失败。

@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指出我正确的方向。