実践 Java「Junitの基礎(assertEquals)」

java

この記事の概要

Junitの使用方法について記載します。
・テストクラスの作成方法~実行~確認
以下の仕様のコードについて実際のテストコードを作成し実行することで上記を確認します。
【仕様】
・3の倍数の場合、Fizzをプリント
・5の倍数の場合、Buzzをプリント
・どちらでもない場合、数字をプリント

テストクラスの作成方法

【操作】
1.テストしたいクラスをプロジェクトエクスプローラ上で選択
2.右クリック > 新規 > その他 
3.ウィザード選択画面でJuと入力
4.Junitテストケースを選択

【操作】
1.新規Junitテストケース画面でデフォルトでもよいが、任意に入力
2.「完了」ボタンを押下

【操作】
1.「OK」ボタンを押下

以下のように、対応するテストクラスが作成されました。

テストケースの作成と実行(実行時エラー)

【試験対象のコード】
FizzBuzzのクラスで、本来の仕様と違う、バグのある以下の状態とする
・mainでは1~100のint型のループ処理でそのint引数をfizzBuzzメソッドに渡している
・fizzBuzzメソッドはバグがあり、どんな値を引数に受けても、Fizzしか返却しない

【Junitで実行する試験コード】
■説明
・メソッド名:
  なんでよいですが、@Testのアノテーションが必要です。
  試験項目表と紐付けられるような分かりやすい名称がよいです。

・assertEquals(“FizzBuzz”,FizzBuzz.fizzBuzz(15));
「FizzBuzz.fizzBuzz(15)」の結果が「”FizzBuzz”」となることを期待しているテストケース

【操作】
1.テストしたいクラスをプロジェクトエクスプローラ上で選択
2.右クリック > 実行 > JUnitテスト

【実行結果の確認】
■説明
失敗:1
  結果が意図した通りでなかったということ。
  ケースを沢山作成しても失敗した部分までが実行されます。失敗すると、
  後続のテストケースが流れないことに注意が必要です。
  よって試験とは、この失敗を0にする作業ともいえます。
障害トレース
  expected: But was:
  「FizzBuzz」の結果を期待していたけど、「Fizz」だったため、期待の結果でなかった
  現在の実装にバグがあり、何がきてもすべて「Fizz」をreturnする実装のためです。

テストケースの作成と実行(失敗なし)

【試験対象のコード】
先ほどは、バグのあるコードだったので、仕様通りに修正しました。
■仕様
・3の倍数の場合、Fizzをプリント
・5の倍数の場合、Buzzをプリント
・どちらでもない場合、数字をプリント

【Junitで実行する試験コード】
以下の4パターンに分けて記載しました。
・ 3の倍数のテストかつ5の倍数でないもの
・ 5の倍数のテストかつ3の倍数でないもの
・3の倍数かつ5の倍数
・3の倍数でも5の倍数でもない

実行の方法は、説明済なので、結果の確認します。
以下の通り、4つのテストメソッドを実行し、失敗が0なのですべてテストコード通りの
結果が得られました。

カバレッジを確認します。
【操作】
1.テストしたいクラスをプロジェクトエクスプローラ上で選択
2.右クリック > カバレッジ > JUnitテスト

【結果の説明】
カバレッジは100%になっていません。ソースをみると赤い部分ですかね。
for文のところが1~100までのループなので、このループの脱出条件とかそのあたりですかね。
まぁmainの部分なので、これは単体でなく、結合試験で確認すればよいと思います。

タイトルとURLをコピーしました