TDD功能测试

Vla*_*den 1 testing tdd unit-testing

我应该为所有嵌套方法编写单元测试,还是为调用者编写一个测试就足够了?

例如:

void Main()
{
    var x = new A().AFoo();
}

public class A
{
    public int AFoo()
    {        
        // some logic
        var x = new B().BFoo();

        // might have some logic

        return x;
    }
}

public class B
{
    public int BFoo()
    {
        // some logic
        return ???;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是否足以为Main()方法编写单元测试,或者我需要为Main,A.AFoo(),B.BFoo()方法编写测试?我该走多远?

提前致谢.

hvg*_*des 5

一种测试纯粹会说,你需要创建类的单元测试AB.

每个类都应该测试所有方法.如果方法可以执行多个操作(例如,如果您有if语句),那么您应该对每个路径进行测试.如果测试变得过于复杂,那么重构代码以使测试更简单可能是个好主意.

请注意,A由于它依赖于它,它很难单独测试B.如果B简单,就像现在一样,它可能还可以.你可能希望把你做检查A,因为技术上他们同时测试集成测试AB在一起.另一个选择是让方法AFoo接受B它操作的实例作为参数.这样你就可以模拟一个实例B并进行真正的单元测试.