在使用junit进行测试的时候,如果某些测试用例,需要先满足某些条件才被允许执行。而又不采用fail,fail会判断测试用例失败,那么这时候就可以使用Assume。使用Assume的方法如下:
import static org.junit.Assume.assumeTrue;
public class AssumeThatTest {
@Test
public void test() {
String version = "1.8";
assumeTrue(version.endsWith("1.7"));
System.out.println("execute test case!");
}
}
通过上面的例子就能看出,采用Assume的assume方法,首先判断vesion是否为1.7,如果是,则继续执行,如果不是,则用例不会继续执行。
此类需要有假定条件才能执行的测试用例,一般成为假定测试。在junit4中,用Assume来实现。
如下,如果我们希望某些测试用例,必须在jdk1.7上才能运行,则代码如下:
public class AssumeThatTest {
@Before
public void setUp() {
String version = System.getProperty("java.version");
assumeTrue(version.startsWith("1.7"));
}
@Test
public void test() {
System.out.println("execute test case!");
}
}
执行结果:
可以看到,如果采用assumeTrue条件,在条件不满足的情况下,该测试用例test会被忽略。 assume还有其他方法:
方法 | 说明 |
---|---|
assumeTrue(b) | 假定条件为true,测试用例才能执行。 |
assumeFalse(b) | 假定条件为false,测试用例才能执行。 |
assumeTrue(message,b) | 假定条件为true,测试用例才能执行。否则会出现带有message消息的异常 |
assumeFalse(message,b) | 假定条件为false,测试用例才能执行。否则会出现带有message消息的异常 |
assumeNotNull(objects) | 假定objects对象不为空,测试用例才能执行。 |
assumeThat(actual,matcher) | 假定actual的amther条件成立,测试用例才能执行。 |
assumeThat(message,actual,matcher) | 假定actual的amther条件成立,测试用例才能执行。否则会出现带有message消息的异常. |
assumeNotNull(objects) | 假定objects对象不为空,测试用例才能执行。 |
assumeNoException(t) | 如果没用异常,测试用例才会执行,出现异常则该会被取消执行。 |
assumeNoException(message,t) | 如果没用异常,测试用例才会执行,出现异常则该会被取消执行。否则会出现带有message消息的异常 |
上述assumeNoException的使用如下:
@Test
public void testNoException() {
try {
int a = 1/0;
System.out.println("testNoException ");
}catch (Exception e) {
assumeNoException(e);
}
}