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假设失败,则跳过测试方法。