我正在使用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);
}
}
如果任何假设失败,则会默默忽略数据点。
我错过了什么或做错了什么?
答案 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指出我正确的方向。