TDD。私は非常に複雑なコーディング演習をしています、私は非常に複雑な場合私的なメソッドをテストするのですか?TDD。私は非常に複雑なコーディング演習をしています、私は非常に複雑な場合私的なメソッドをテストするのですか?
私のクラスは1つの公開メソッドしか公開していませんが、非常に複雑なメソッドはほとんどありません。テストする必要がありますか?
疑問があります:私はそれらをテストするかしないのですか?
TDD。私は非常に複雑なコーディング演習をしています、私は非常に複雑な場合私的なメソッドをテストするのですか?TDD。私は非常に複雑なコーディング演習をしています、私は非常に複雑な場合私的なメソッドをテストするのですか?
私のクラスは1つの公開メソッドしか公開していませんが、非常に複雑なメソッドはほとんどありません。テストする必要がありますか?
疑問があります:私はそれらをテストするかしないのですか?
TDDを実行している場合は、「非常に複雑な」プライベートメソッドがある場所に来ることは物理的に可能ではありません。 TDDの第3段階は「リファクタ」です。あなたがフィーチャを実装するとき、あなたは絶えず物を引き離したり、物を壊したり、メソッドやクラスを抽出したりするので、100000ものことを神秘的なやり方で行う神オブジェクトで終わることはありません。
レガシーコードでこのようなクラスを扱う場合(つまり、トピック全体で(そして人々が持っている)全書籍を書くことができる)、コードを作成するために必要なリファクタリングを最小限に抑えることが一般的な考え方ですすべてのテスト可能(反射や類似した醜いハックに頼ることなく)。次に、契約を破ることなく変更を加えることができると確信できるまで、コードをテストでカバーします。
この時点で、リファクタリングを開始したり、物を壊したり、抽出したり、もっと管理しやすいものになるまで狂ってしまうことができます。
最終行はなしです。プライベートメソッドはテストしないでください。それは理解しにくい脆いテストのためになり、より良いデザイン(TDDの明確な目標の1つ)を得るのではなく、悪いデザインをセメントするために役立ちます。
"今はカバレッジを速くして後で修正できます"と思っても、それは価値がありません。それはあなたが今後10年間に返すことのない大きな技術的負債です。それはあまりにも面倒です。
*「私のクラスは公開メソッドを1つだけ公開しています」*とはどういう意味ですか?どうして知っていますか?最初にテストを書いていませんか? –
私は運動としてそれを書き直そうとしています。 – Prostitutor