例:
public interface IFoo
{
bool DoSomething();
}
public class Foo:IFoo
{
public bool DoSomething()
{
var result = DoOtherThing();
...
return result;
}
public bool DoOtherThing()
{
...
}
}
DoSomething()
私の通常の TDD アプローチは、とDoOtherThing()
メソッドの両方で単体テストを作成することです。DoOtherThing
しかし、これが非公開の方法である場合、これを行うのは非常に困難です。また、プライベート メソッドをテストすることは禁止されていることも読みました。
クラスの目的がその (IFoo) インターフェイスを介してのみアクセスされる場合でも、コード カバレッジとテストを容易にするために、クラスにパブリック メソッドを持つことは容認できると考えられますか? 通常、インターフェイスのスコープ外にあるメソッドをプライベート メソッドとして配置しますが、これではすべてのコードを効率的にテストすることはできません。メソッドをパブリックにすると、Foo
クラスの正しいテストが可能になりますが、少なくとも私には、クラスの外部から呼び出されないパブリック メソッドを持つことは正しくないように思えます。この方法はTDDに最適と考えられていますか、それともより良い方法がありますか?