如果仅使用一种具有相似参数的私有方法,是否需要测试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/