例子:
public interface IFoo
{
bool DoSomething();
}
public class Foo:IFoo
{
public bool DoSomething()
{
var result = DoOtherThing();
...
return result;
}
public bool DoOtherThing()
{
...
}
}
我通常的 TDD 方法是在DoSomething()
和DoOtherThing()
方法上编写单元测试。DoOtherThing
但如果是私有方法,这将很难做到。我还读过测试私有方法是一个禁忌。
为了便于代码覆盖和测试,在一个类上拥有公共方法是否被认为是可以接受的,即使该类的目的只是通过其 (IFoo) 接口访问?通常我会将接口范围之外的方法作为私有方法,但这不允许您有效地测试所有代码。公开方法允许您对Foo
类进行正确的测试,但至少对我来说,拥有不从类外部调用的公共方法似乎不正确。这种方式被认为最适合 TDD 还是有更好的方法?