特にアプリケーションが非常に大きい場合や非常に複雑な場合は、コードで作業している唯一のプログラマーである場合、単体テストにはいくつかの価値があります。ユニットテストが不可欠になるのは、同じコードベースで作業するプログラマが多数いる場合です。ユニットテストの概念は、これらの大規模なチームで作業する際のいくつかの困難に対処するために導入されました。
単体テストが大規模なチームに役立つ理由は、すべて契約に関するものです。私のコードが他の誰かによって書かれたコードを呼び出す場合、私は他の人のコードがさまざまな状況で何をしようとしているかを推測しています。これらの前提条件がまだ真であれば、コードは引き続き機能しますが、どの前提条件が有効であるか、どのように前提条件が変更されたかを知るにはどうすればよいですか?
これがユニットテストの出番です。クラスの作成者は、ユニットテストを作成して、クラスの予想される動作を文書化します。単体テストは、クラスを使用するすべての有効な方法を定義し、単体テストを実行すると、これらのユースケースが期待どおりに機能することを検証します。クラスを利用したい別のプログラマーは、ユニットテストを読んでクラスに期待できる動作を理解し、これをクラスの動作に関する前提の基礎として使用できます。
このように、クラスとユニットテストのパブリックメソッドシグネチャは、クラス作成者と、コードでこのクラスを使用する他のプログラマーとの間でコントラクトを形成します。
このシナリオでは、プライベートメソッドのテストを含めるとどうなりますか?明らかにそれは意味がありません。
あなたがあなたのコードに取り組んでいる唯一のプログラマーであり、コードをデバッグする方法として単体テストを使用したい場合、そのことには何の害もありません。それは単なるツールであり、ただし、単体テストが導入された理由ではなく、単体テストの主な利点はありません。