如果仅使用一种具有相似参数的私有方法,是否需要测试2种方法?

例如,我有一些接口(合同):

public interface IInterface
{
   void Method1(arg1, arg2, arg3);
   void Method2(arg1, arg2, arg3);
}


和此接口的实现:

public class MyClass : IInterface
{
    public void Method1(arg1, arg2, arg3)
    {
        Method3(arg1, arg2, arg3)
    }

    public void Method2(arg1, arg2, arg3)
    {
        Method3(arg1, arg2, arg3)
    }

    private void Method3(arg1, arg2, arg3)
    {
        // handle data
    }
}


例如,我有3个方法1测试,是否需要根据TDD / RGB规则复制粘贴此方法2方法?

最佳答案

因此,听起来您似乎真的不想重构类的调用者以使用一个简化的接口。如果使用该语言的地方很普遍,或者共享的代码库中您无法随意重构,那么这可能是合理的。

我要做的就是将此类转换为外观,以实现更简洁的界面。换句话说,通过简洁的界面将您的私有方法拉到一个新类中。然后,以与您已经使用的几乎相同的方式使用现有的类,但是对真实的实现有更多的依赖性。

这有两个优点:


您可以开始将取决于原始接口的类逐渐移至新的实现。 (特别是如果您不赞成使用这些方法来警告其他开发人员。)最终,可以完全删除外观。
您可以对新课程进行广泛的单元测试。
您可以编写两个非常简单的单元测试,以验证您是否在现有类中调用了此依赖关系。 (无需再测试每种情况。)

关于c# - TDD,如果仅使用一种私有(private)方法,那么如何测试两种公共(public)方法呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46302497/

10-12 00:33
查看更多