skillup

技術ブログ

Java

テストコードの実装

投稿日:

以前、テストコードの大切さを力説しましたが、実際に書いてみると作業の安心度が全く違います。

やはりメソッド単位での確認やデバッグができるのは非常にありがたいです。また時間がたってもテストコードを見ることで仕様がわかる点も助かりますね。

仕様書よりもはるかに助かります。

仕様書は読んで字のごとく仕様を定めた書類であり、仕様を確認するためにある書類です。実際の開発業務ですと仕様の修正があるため、仕様書と実際の成果物の差が出てしまうことがほとんどです。

仕様書の意味がないんですよねぇ・・そんなときでもテストコードをみればどのときにどういう動きが正しいのかということがわかりやすい形で定義されているため非常に楽です。

なんで今までやらなかったんだろう・・・という気になりますね。(一番大きいのは自分のテストコードに対する考え方が間違っていたからなのですが。)

テストコードチュートリアル

実際にJavaでテストコードの作成を行います。(下記はNetbeannsでの操作を前提にしています。)

まず対象となるコードの部分で右クリックを行います。

「ツール→テストの作成/更新」という項目がありますので、クリックしますとテストコードが生成されます。最初のうちは全てディフォルトで構わないと思います。

SnapCrab_NoName_2015-4-15_22-21-49_No-00

SnapCrab_NoName_2015-4-15_22-22-13_No-00

下記が実際に生成されたテストコードのキャプチャーになります。

@Testというアノテーションがついているメソッドが実装されるテストコードになります。これ以外にも全テスト実行前、実行後に走るメソッドなどもありますが、最初のうちはIDEが生成したディフォルトで構わないでしょう。

実際に値を代入し、戻り値の変数を設定します。ここではexeResultというのが期待値(つまりこの値になればOKということ。)になります。

SnapCrab_NoName_2015-4-15_22-23-4_No-00

テストコード

このassertEqualsというメソッドが期待値と実際の値が等しいかをチェックするJunitのメソッドになります。二つの変数があっていれば問題なくテストが終わり、テストが無事終了します。(成功時には下記のようなメッセージが出力されます。)

SnapCrab_NoName_2015-4-15_22-23-17_No-00

他にも無数のメソッドがありますが、assertEqualsだけで結構いけました。他にも使えそうなものがあれば随時紹介していこうとおもいます。

テストコードがありがたい点として、単体での確認ができること。テストコードが10個あっても1つだけを単独で実行させることができます。

デバッグもできますので、単体のメソッドの動きを見たいときはここでブレークポイントを設定して、見てあげればOKです。これがめちゃくちゃ便利です。

注意点としてはテストに関係ないプログラムで文法エラーなどがある場合、動きません。そのような場合はとりあえず文法エラーがなくなるまでコーディングをするか、一時的にコメントアウトしましょう。

ちなみにテストに失敗したときは下記のような赤いメッセージが出力されます。期待値と実際の値が違ってたときや例外が発生したときです。
SnapCrab_NoName_2015-4-15_22-41-53_No-00

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

URLパターンマッピング

JavaEEではURLのマッピングについて結構悩んだんですが、サーブレットは案外簡単ですね。 web.xmlで設定することもできるようですが、アノテーションで設定することもできるようです。 例えば s …

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …

no image

Seleniumでの画面テスト

普段テストはJunitで単体テストを書いていますが、画面からのテストなどは当然チェックできません。 フレームワークだとどうしても内部構造がわからず画面から直接うごかして確認しなくてはいけないようなケー …

no image

String,Integer,Booleanの相互変換

データベースにはbooleanでデータが入っているのに画面では0か1の数字でないと表示ができないときなどがあると思います。 そんな時に文字列と論理値、あるいは文字列と数値、数値と論理値の変換などをする …

no image

文字列変換系処理まとめ

Javaで文字列の変換(全角、半角など)の処理のまとめです。 ブログに記事として書こうと思ったのですが、丸々コピペになってしまうので、それじゃあ元リンクを紹介したほうがいいかなと思い、今日は基本的にリ …