如何做好UnitTest(六):junit4的假定测试

146 阅读2分钟

在使用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,如果是,则继续执行,如果不是,则用例不会继续执行。

image.png 此类需要有假定条件才能执行的测试用例,一般成为假定测试。在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!");
    }
}

执行结果:

image.png

可以看到,如果采用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);
    }
}