想象一下以下情况:我想为一个遗留应用程序编写测试,以便能够重构(丑陋的)代码。
现在有一大块代码处理一些约束。基本上它归结为这个签名:
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 可用。任何提示,想法?