単体テスト(Unit Testing)とは、メソッドのような小さな単位でプログラムをテストすることです。 オブジェクト指向言語における単体テストは、普通、クラス単体を検査するプログラムを作ることによって行います。
クラスを設計する場合、一般にどんな入力を与えたらどんな出力になる、またはどのように状態が遷移するかを決めます。 単体テストではある入力と、その入力に対して期待する出力の組を記述することにより、テストを行います。 この、入力と出力の組をテストケースと呼びます。
単体テストは理想的には、すべてのクラスについて、完璧なテストを書きます。 これはすなわち、「テストを通過すれば、クラスは完成している」というわけです。 このように、完璧なテストをクラスを実装する前に書いておき、「クラスの実装=テストの通過」という状態にして開発していくやり方を「テスト駆動開発」といいます。
id:uchan_nos的にはこのやり方は極端だと思いますが、テストをきちんと書いておく、という基本姿勢は重要だと思います。
単体テストは特別な道具なしでもできます。 例えば、テストしたいクラスにmainメソッドを実装し、その中でそのクラスをインスタンス化し入力を与え、出力が期待された値になっているかどうかをチェックすればいいのです。 または、テスト専用のクラスを作り、その中で行うようにもできます。この方法なら、テスト対象クラスにmainメソッドが含まれてしまうのを回避できます。
このようなテストは、テスト用クラスやテストケースを実装するのが非常に面倒ですが、その面倒を多少和らげるためのフレームワークに JUnit と呼ばれるものがあります。 JUnit はJava専用の単体テストフレームワークで、Eclipseともよく連携します。 JUnit を用いれば、単体テストを実装するときに便利な機能を提供してくれますので、テストケースを書くことが少し楽になります。
JUnitには複数のバージョンがありますが、その中でも最新のバージョンである JUnit4 の使い方を説明します。
基本的な使い方はJUnit(JUnit4)の概要~利用方法【ユニットテスト - テスト】が役立ちます。 この中で特に注目したいのは「テストクラスの作成」という項目にある次の記述です。
画面左側の「プロジェクト・エクスプローラー」でテスト対象となるクラスを右クリックしてメニューから「新規」>「その他」を選択します。
これを間違えると以降の画面が違ってきますので、注意です。