当内部已经被覆盖时,UnitTesting类的公共接口?

时间:2013-04-15 12:38:27

标签: unit-testing

我已经用UnitTests覆盖了我的类的内部实现。现在测试我的公共接口是否仍然有用(这是一个函数,它只是对内部方法的一系列调用)?

感觉我会添加额外的测试来测试相同的东西。

或者正在测试公共接口更多的是集成测试(即使我已经存储了我的数据访问权限以便它在内存中处理完毕),以便它测试所有UnitTested方法是否能很好地协同工作?

示例:

internal bool internalCheck() {
    // complex logic that is being unit tested
}

internal void internalDoSomething() {
    // do stuff. is being unit tested
}

public void DoIt() {
    if (internalCheck()) {
        internalDoSomething();
    }
}

现在,如果我要添加测试DoIt的测试,我基本上会重新测试internalCheck的所有逻辑流程并断言当它返回true时,internalDoSomething正在调用。

嗯,我想我已经弄明白了: 我需要模拟类本身并检查正确的调用,几乎忽略了实际的输入/输出。要测试公共方法,而不是重新测试internalCheck,我使用模拟框架让internalCheck返回我想要测试的流,然后验证是否已调用正确的方法。

1 个答案:

答案 0 :(得分:0)

这取决于您如何定义单位。通常是类,所以这仍然是一个单元测试。

即使您已经测试了内部方法,测试公共接口仍然很重要,以确保内部方法协同工作。