背景
Javaを勉強するにあたり、開発環境としてIntelliJ IDEAを使い始めた。
作成したクラスのユニットテストコードを作成・実行する機能がとても
便利なので、その際の手順をメモしておく。
目次
JUnitによるユニットテスト
JUnitとは、Javaで開発されたプログラムのユニットテストを自動化するための
フレームワークである。IntelliJ IDEAでは、このJUnitを利用してテスト対象クラスの
ユニットテストを簡単に生成・実行できるようになっている。
ja.wikipedia.org
ユニットテスト実行手順
1. テスト対象のクラスを作成する
以前、この記事にも書いたように、まずは専用プロジェクトを作成し、
テスト対象のクラスのコードを書く。
www.eureka-moments-blog.com
今回は下記のように、銀行口座の名義人名と残高の情報を管理するクラスを
作成してみた。
/* * Bank account class * Record owner's name and balance data * Author: Shisato Yano */ public class Account { String owner; int balance; // constructor public Account(String owner, int balance) { this.owner = owner; this.balance = balance; } // transfer money from this account to another account public void transfer(Account dest, int amount) { dest.balance += amount; this.balance -= amount; } }
2. テストコード用ディレクトリを作成する
作業中のプロジェクトディレクトリにある.imlファイルを右クリックし、
開いたメニューから「新規」-> 「ディレクトリ」と進んで、
下記のようにtestディレクトリを作成する。
3. 作成したディレクトリをテスト用に設定する
左上の「ファイル」メニューから「プロジェクト構造」を選択。
開いた画面の左メニューから「モジュール」を選択する。
先程作ったtestディレクトリを右クリックし、「テスト」を選択。
「OK」で閉じると、作成したtestディレクトリの色が緑色になる。
4. テスト用クラスを作成する
最初に作成したAccountクラスのコードにカーソルを合わせると、
このように電球のマークが表示される。
マークの右にある下矢印を押し、表示されるメニューから
「テストの作成」を選択。
この画面が開くので、テストコードのクラス名などを決めて「OK」を押す。
すると、このようにテストコードがtestディレクトリ内に自動で作成される。
(この時点ではまだテストの中身は空)
作成直後の状態だと、上記のようにimport文のjunitのパスに赤線が引かれている。
これは、必要なライブラリであるJUnitにパスが通っていないことを意味する。
ここで、赤線部分にカーソルを合わせると、「JUnitをクラスパスに追加する」と
いうポップアップメッセージが出るのでそれをクリックする。
すると、このようにJUnitのライブラリをダウンロードする画面になるので、
OKを押してダウンロードする。完了すると、ライブラリがクラスパスに追加
され、赤線も消えるはず。
5. テストコードの中身を記述する
上記の段階ではまだテストの中身が何もない状態なので、
具体的なテストコードを記述する。今回は下記のような
テストコードにしてみた。
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class AccountTest { @Test public void testOwner() { Account account = new Account("Hoge", 10); assertEquals("Hoge", account.owner); } @Test public void testBalance() { Account account = new Account("Hoge", 10); assertEquals(10, account.balance); } @Test public void testTransfer() { Account account_src = new Account("Hoge", 10); Account account_dest = new Account("Fuga", 20); account_src.transfer(account_dest, 5); assertEquals(25, account_dest.balance); assertEquals(5, account_src.balance); } }
6. テストコードを実行する
最後に、作成したテストコードを実行してみる。
テストコードのクラス定義部分の左に下記のような緑の
アイコンがあるはずなので、それを押し、表示される
メニューから「実行 AccountTest」を選択する。
するとテスト対象コードとテストコードがビルドされ、
テストが実行される。問題なければ、下記のように全テスト
ケースが成功するはず。
逆にこのとき、期待される結果通りにならないテストがあると、
このようにどのテストが失敗したかを教えてくれる。