こんにちは。「Javaを復習する初心者」です。
今回はJUnitを使ってみました。
JUnitはJavaのフレームワークのひとつです。テストケースを作成することで、ユニットテストを自動がすることができます。
テストするクラス
テストするクラスは以下です。
ソース
public class OpenInterval {
private double start;
private double end;
public OpenInterval(double start, double end) throws IllegalArgumentException {
if (end <= start) {
throw new IllegalArgumentException(
String.format("引数はstart < endである必要があります。start: %d, end: %d", start, end));
}
this.start = start;
this.end = end;
}
public boolean contains(double x) {
return start < x && x < end;
}
}
このクラスは数直線上の開区間(境界を含まない区間)を表します。以下の構成になってます。
- 以下のフィールドを持ちます。
修飾子と型 名前 用途 private double start start 区間の左端の座標 private double end end 区間の右端の座標 - 以下のコンストラクタを持ちます。
- public OpenInterval(double start, double end) throws IllegalArgumentException
-
- end <= startの場合、IllegalArgumentExceptionをスローします。
- それ以外の場合、引数を同名のフィールドに格納します。
- 以下のメソッドを持ちます。
- public boolean contains(int x)
- xが区間に含まれる場合、trueを返します。それ以外の場合、falseを返します。
メソッドのみテスト
メソッドのみテストすることにします。
単体テストは次の2つの観点があります。
種類 | 着目する箇所 |
---|---|
ホワイトボックステスト | 内部構造 |
ブラックボックステスト | 入力と出力 |
今回はブラックボックステストの観点でテストすることにします。
インスタンスを「new OpenInterval(0, 1)」で生成して、このインスタンスに対してcontains()メソッドを呼び出し、テストを行うことにします。限界値分析という手法を参考にすると以下のテストケースが適切のようです。
case | xの値 | 期待値 |
---|---|---|
No. 1 | 0.0 | false |
No. 2 | 0.1 | true |
No. 3 | 0.9 | tru |
No. 4 | 1.0 | false |
上記の通りにテストケースは以下のようにしました。
テストケース
public class OpenIntervalTest {
private OpenInterval openInterval = new OpenInterval(0, 1);
@Test
public void testContains1() {
assertThat(openInterval.contains(0.0), is(false));
}
@Test
public void testContains2() {
assertThat(openInterval.contains(0.1), is(true));
}
@Test
public void testContains3() {
assertThat(openInterval.contains(0.9), is(true));
}
@Test
public void testContains4() {
assertThat(openInterval.contains(1.0), is(false));
}
}
このjavaファイルを右クリック->実行->jUnitテストをクリックするとテストが実行されます。
全てのテストに合格すると緑色のラインが表示されます。
コンストラクタでは例外が発生するパターンがあります。これをチェックするには以下のように記述します。
例外をチェック
@Test(expected = IllegalArgumentException.class)
public void testContains5() {
new OpenInterval(1, 0);
}
上記のように@Test(expected = [発生する例外クラス])という記述をします。