SUnit
SUnitでは試験をクラスとして記述する。このクラスを試験ケースと呼ぶ。
次に可変長配列であるOrderedCollectionを試験する試験ケースの例を記述する。
試験ケースは(1)の様にTestCaseを直接または間接的に継承したクラスで殆どの場合試験対象となるクラスと一対にすることが多い。試験ケースの中にある(2)の様なtestがついたセレクターを持つメソッドは試験メソッドと呼び、開発者は試験メソッドの中に試験方法を記述する。試験方法を試験メソッドとして記述しておけばSUnitにより複数の実行条件、複数の実行単位により実行されるようになる。実行条件は単に試験の合格状況を確認するための失敗しても停止しない通常実行とデバッグ修正を目的とした失敗した時点で停止するデバッグ実行がある。実行単位では、試験メソッド個別、試験ケース単位、TestCaseの派生全てといったものがある。この例では(3)により試験ケース単位で実行している。
SUnitによる試験の自動化はそれまで禁忌とされていた試験済みソースコードの改変を可能にした。SUnitによりオブジェクトの入出力のみを保証するブラックボックス試験(英語版)を記述すればSUnitから見えるオブジェクトのプロトコル(あるはインターフェース)が変わらない限り試験対象のクラスをどんなに改編しようと同じ試験メソッドを使いつづけることができ改編後も動作に問題が無いことを保証することができる。例えばメソッドを派生クラスから基底クラスに移動、メンバーの変数を別のオブジェクトに委譲、あるいは複数のメソッドで共通するメッセージ送信を新しいメソッドとして抽出など、これらの修正はブラックボックス試験である限り試験メソッドと動作には影響はない。この考えに基き積極的に試験済みのソースコードを改編する手法としてリファクタリングが生まれた。
なお単体試験においてホワイトボックス試験(英語版)はリファクタリングを妨げるためすべきでないとされる。