只有一个有效的testCase,我可以节省时间来编写失败的吗?(我可以自动生成它们吗?)



想象以下情况:我想为一个遗留应用程序编写测试,以便能够重构(丑陋的)代码。

现在有一大块代码处理一些约束。基本上可以归结为这个签名:

public Boolean isValidRequest(Boolean constraint0, Boolean constraint1, Boolean constraint2, BooleanConstraint3) {
    return constraint0 && constraint1 && constraint2 && constraint3;
}

现在我想测试的是"链接"(这里所有的约束都与"&&"链接在一起,但我想确保它保持原样,例如没有打字!)

为了测试所有的组合,我必须写n²个测试,其中n是约束的个数。这里是4²,也就是16次测试。我想知道是否有更简单的方法。唯一有效的测试用例是:

@Test
public void testAllConstraintsFulfilled() {
    assertThat(myObjectToTest.isValidRequest(true, true, true, true)).isTrue();
}

而所有其他组合应该失败。我想知道是否有一种我不知道的方法可以跳过手动编写其他15个测试用例,而是说:

1) Try all combinations
2) Only (true, true, true, true) should not fail

我有mockito, assertj和junit4可用。有什么提示或想法吗?

有两种方法:

A)你转向覆盖;你继续写测试用例,直到达到100%。您不需要测试所有可能的路径—只需测试程序可以采用的现有路径即可!

B)你反过来的方法:而不是写测试用例击中路径;您使用为您生成测试的解决方案。换句话说:您提供规则,并且引擎验证测试下的代码是否与这些规则匹配。QuickCheck就是这样一个例子。

相关内容

  • 没有找到相关文章

最新更新