2.2. テストメソッド
テストクラスの中には、対象クラスのメソッドのテストを行うプログラムを記述します。以下は、犬の名前を取得するメソッド「getName()」のテストメソッドの例です。getName()はDogクラスのnameインスタンス変数の値を返すメソッドです。
/** * getNameメソッドのテスト * */ public void testGetName() { String name="pochi"; Dog dog=new Dog(); dog.setName(name); assertEquals(name,dog.getName()); }
テストメソッドの名前は、「test」で始めます。「test****」という形のわかりやすいものをつけましょう。ここでは、DogクラスのgetNameメソッドのテストメソッドなので、「testGetName」という名前にしました。なお、テストメソッドには引数も戻り値もありません。 また、テストメソッドは一つのテストクラスに複数設定しても構いません。
テストメソッドでは、文字通り「テストを行う」プログラムを記述します。例えば、getName()のテストをする場合、大体以下の流れでテストを行うと思います。
- Dogインスタンスを作成
- 作成したインスタンスのname変数の値にpochiを設定
- getName()メソッドを使用して取得した値がpochiかどうか、確かめる。
testGetName()メソッドは、上の手順を記述したプログラムになります。8行目でDogのインスタンスを作成し、9行目でname変数に「pochi」を設定しています。10行目で、getName()メソッドで取得した値が、pochiかどうか、確かめています。
テスト結果が予想通りかどうかは、いろいろなassertを使用して確かめます。ここでは、assertEqualsというメソッドでテスト結果を判定しています。assertEqualsメソッドは、2つの引数が等しいかどうか判断します。一つ目の引数は期待される結果です。二つ目の引数は実際の結果です。いま、getName()により返される文字列が「pochi」となっているかどうか、assertEqualsで判断します。
assertメソッドは他にも、以下のようなものがあります。
static void assertEquals(* expected, *actual) |
期待される結果と実際の結果が同じかどうか、判定する。expectedとactualは同じ型である必要がある。結果がdouble、float以外の基本データ型およびオブジェクトの場合は、このメソッドを使用する。 |
static void assertEquals(String message,*expected,* actual) | 上と同じ。ただし、テストが失敗した(expectedとactualが異なる)場合には、messageが表示される |
static void assertEquals(*expected,* actual,* delta) |
期待される結果と実際の結果が同じかどうか、判定する。3番目の引数に、許容誤差を記述する。expectedとactualは同じ型である必要がある。結果がdouble、floatの場合は、このメソッドを使用する。 |
static void assertEquals(java.lang.String message, double expected, double actual, double delta) | 上と同じ。ただし、テストが失敗した(expectedとactualが異なる)場合には、messageが表示される |
static void assertNotNull(java.lang.Object object) | 与えられたObjectがnullでないかどうか判定する |
static void assertNotNull(java.lang.String
message, java.lang.Object object) |
上と同じ。ただし、テストが失敗した(Objectがnullだった)場合には、messageが表示される |
static void assertNull(java.lang.Object object) | 与えられたObjectがnullかどうか判定する |
static void assertNull(java.lang.String message, java.lang.Object object) | 上と同じ。ただし、テストが失敗した(Objectがnullでなかった)場合には、messageが表示される |
static void assertSame(java.lang.Object expected, java.lang.Object actual) | 与えられた2つのObjectが同じObjectを参照しているか判定する |
static void assertSame(java.lang.String message, java.lang.Object expected, java.lang.Object actual) | 上と同じ。ただし、テストが失敗した(異なるObjectを参照している)場合には、messageが表示される |
static void assertTrue(boolean condition) | 与えられた条件が正しいかどうか判定する |
static void assertTrue(java.lang.String message, boolean condition) | 上と同じ。ただし、テストが失敗した(条件が偽)場合には、messageが表示される |