JUnit假设
时间:2020-02-23 14:35:23 来源:igfitidea点击:
JUnit假设可以帮助我们跳过某些特定场景的测试。
有时,我们的测试用例取决于输入,操作系统或者任何第三方数据。
如果我们的测试不是针对某些特定输入编写的,则可以使用假设跳过我们的测试方法。
JUnit假设
JUnit Jupiter Assumptions类提供了一组有用的假设方法。
将它们导入我们的测试程序并编写流利的代码是个好主意。
import static org.junit.jupiter.api.Assumptions.*;
假设我们有一个定义为的测试方法:
@ParameterizedTest
@ValueSource(ints = {1,2,3,-1})
void test(int i) {
try {
Thread.sleep(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
为简单起见,我使用的是" ValueSource",但我们可以使用第三方方法来输入输入的测试数据。
如果我们进行以上测试,则其中一项测试将失败。
assumeTrue()
如果输入数字为负,我们可以使用假定True()跳过测试。
下面是更新的代码:
@ParameterizedTest
@ValueSource(ints = {1,2,3,-1})
void test(int i) {
assumeTrue(i >=0);
//assumeTrue(i >=0, "Wrong Input, Only positive ints please");
try {
Thread.sleep(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
现在,当我们运行测试时,当输入数字为负数时,JUnit将跳过。
assumeFalse()
我们可以使用假定的false()来验证条件是否返回false。
假设我们有一种不想与" root"用户一起运行的测试方法。
在这种情况下,我们可以使用系统环境变量来使用假定错误()来跳过测试。
@Test
void test_assumeFalse() {
assumeFalse("root".equals(System.getenv("USER")));
//code that I don't want to run as root user
}
assumingThat()
如果假设有效,则此方法执行提供的Executable。
如果假设无效,则此方法不执行任何操作。
当我们的假设有效时,我们可以将其用于日志记录或者通知。
@Test
void test_assumingThat() {
assumingThat("hyman".equals(System.getenv("USER")),
() -> {System.out.println("USER is hyman, continue further");});
}
JUnit假设与断言
JUnit assert用于为我们的测试方法编写测试方案。
而假设是用来验证我们测试用例的有利条件。
如果JUnit assert失败,则测试失败。
如果junit假设失败,则跳过测试方法。

