java代码分支应该应用什么样的单元测试组合?
如果我不太确定以下哪些测试是必要的或多余的。 考虑单元测试以下代码:
public class Locker {
public enum Type { FOO, BAR, FOOBAR };
private Locker() {}
public boolean shouldlock (int x) {
return x > 10;
}
public boolean lock (Type type, int x) {
switch (type) {
case FOO : return shouldlock(x);
case BAR : return shouldlock(x * 2);
}
return false;
}
}
测试用例1:测试shouldlock
的正确和错误情况到目前为止毫无疑问
Question 1
测试用例2:lock
对于输入类型Foo
也要测试正确和错误的情况,即两者?我们已经测试了这两种情况。因此,它可能是多余的。但不太确定
Question 2
测试用例3:假设Question1
的答案为真,我们还需要测试Bar
的真假情况吗
Question 3
测试用例4:假设两个Question1 and Question2
的答案都为真。假设现在shouldlock
已更改为private(只需假设它)。测试中唯一的区别是我应该省略^{
Question 4
测试用例5:是否需要检查唯一遗漏的枚举FOOBAR
是否返回false
Question 5
假设问题4的答案为真,那么如果enum明天包含100个以上的项目呢?如何衡量这样的测试
# 1 楼答案
shouldlock
,并验证是否使用x
调用它(可能对测试使用常量值)。使用类似Mockito的东西,并让它仅在调用lock
时调用实方法李>shouldlock
是否被称为wtihx * 2
李>FOO
使用10和11,BAR
使用5和6李>FOOBAR
进行一次测试李>