TDD を使用してクラスを実装すると仮定するとStack
、Stack クラスの各機能に対して、それを実行する新しいテストを追加する必要があります。
[TestMethod] public void Should_Be_Empty_After_Instantiation()
[TestMethod] public void Should_Not_Be_Empty_After_Pushing_One_Item()
...
一方、単体テストを実行するときは、クラスが提供するはずの外部動作に焦点を当てる必要があるため、単体テストのセットは、Stack インターフェースの期待されるすべてのコントラクトが満たされていることを確認します。
私の質問は、これらの 2 つの側面をどのように調整するかということです。
たとえばStack
、初期サイズが 8 の配列を内部で使用すると仮定すると、ユーザーが 9 番目の項目を挿入したい場合は、配列を大きくする必要があります。そのサイズ変更機能を追加するには、クラス コードをその方向に駆動する少なくとも 1 つのテストが必要です (そうですか?)。
一方、それは、クラスの実際のコントラクトを実行しないユニットテストを追加することになります(または、これは実際にはユニットテストではありませんか?)(ユーザーはスタック) しかし、その実装。
ここにはひねりがあり、解決方法がわかりません。ここで概念を混乱させていますか?
ありがとう
編集
多くのグーグル検索の後、この問題に対処していると思われる次のリンクにたどり着きました: http://stephenwalther.com/blog/archive/2009/04/11/tdd-tests-are-not-unit-tests.aspx