有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    1. 测试案例1-是的,在边界条件(10,11)上测试真实和错误案例
    2. 测试用例2-Mock shouldlock,并验证是否使用x调用它(可能对测试使用常量值)。使用类似Mockito的东西,并让它仅在调用lock时调用实方法
    3. 测试用例3-与测试用例2相同,但验证shouldlock是否被称为wtihx * 2
    4. 测试用例4-您必须测试每种类型的边界用例:FOO使用10和11,BAR使用5和6
    5. 测试用例5-是的,只需要对FOOBAR进行一次测试
    6. 您必须为新值编写测试。如果有更多的枚举值,但它们都属于默认情况,则不需要更多的单元测试。如果有额外的逻辑,应该编写单元测试(最好在生产代码之前)来测试该逻辑