アラカン"BOKU"のITな日常

あれこれ興味をもって考えたことを書いてます

SpringBootプロジェクトでJUNIT4を使った単体テストをする。 STS 3.8.3(Spring Boot 1.5.1)

String Bootに慣れるため、簡単なクラスを作って、JUNIT単体テストまでやってみます。

 

ソースがごちゃごちゃするので、パッケージに階層をつけてファイルを分類できるようにします。

 

調べた限り、Spring Bootでは、特にパッケージ構成の縛りはない様なので、以下のようにしました。

f:id:arakan_no_boku:20170219141729j:plain

 

コントローラクラスを「web」、エンティティクラスを「domain」にしている例もよく見かけます。どっちにするか迷ったのですが、自分が慣れていて、わかりやすい名前を選んでます。

 

ちなみに、srcフォルダの、src/main/javaとsrc/test/javaの2つのフォルダの下は全く同じパッケージ構成にしておくと、junitを使って単体テストする時に楽です。

 

テスト対象にするクラスは、src/main/javaの下のutilsパッケージに作ります。せっかくだから役に立つものがいいな・・ということで、Mapインスタンスを生成するユーティリティクラスを作ります。

 

Map<String,String> hoge = new HashMap<String,String>(); みたいに、<String,String>と2回書かないといけないのを、Map<String,String> hoge = NewManager.newMap(); みたいに書けるようにします。

public final class NewManager {

     public static <T, K> Map<T, K> newMap() {
           return new HashMap<T, K>();
     }
}

 

今度は、src/test/javaの下のutilsパッケージの下にテスト用のクラスを作ります。新規>JUNITテストケースを選び、ダイアログに必要項目を入力します。

 

JUNITのバージョンは、新規JUNIT4テストケースを選びます。

 

テスト対象のクラスが「NewManager」なので、テストクラスは「TestNewManager」にしていますが、名前はわかりやすければ良いです。テスト元クラスの指定だけは間違いなきよう。

f:id:arakan_no_boku:20170221194742j:plain

 

次へボタンを押して、元クラスのテストしたいメソッドにチェックをつけて、完了します。

f:id:arakan_no_boku:20170221195144j:plain

 

テストケースは、サンプルなので、インスタンスを生成して、NULLでないことだけチェックするだけにしときます。

 

@Test
public void testNewMap() {
      Map<String,String> testMap = NewManager.newMap();
      assertNotNull(testMap);
}

 

 JUNIT4だと、@Testってアノテーションだけで、ちゃんとテストを認識してくれるので、ホント楽です。

 

JUNITの実行は、右クリックメニューの実行>JUNITテストで行います。

 

src/test/java か、その下のパッケージを選んで右クリックメニューを表示しないと、JUNITテストが選択肢としてでてこない場合があるので注意です。

f:id:arakan_no_boku:20170221200310j:plain

 

今回は、JPAの機能やDIを使わないので、不要でしたが、必要ならクラス名の前に以下のようなアノテーションをつけます。

@RunWith(SpringRunner.class)
@SpringBootTest 

 

このアノテーションをつけると、最初、ちょっと時間がかかります。

 

なぜかというと、ライブラリがロードされるからです。それでも、約30秒くらいですかね。うまくいくと、おなじみのグリーンバーがでてきます。

 

f:id:arakan_no_boku:20170221211954j:plain

これで、とりあえず単体テストができることは確認できました。

 

ちなみに、ここで使っているのはSpring Tool Suite (STS)という開発環境です。(Spring Tool Suite 3.8.3 で Spring Boot 1.5.1です)

 

インストールしていない方は、前々回の記事を参考にしてセットアップしてください。

arakan-pgm-ai.hatenablog.com

 

 


 STS  3.8.3(Spring Boot 1.5.1)+thymeleaf 関連記事

 

入力画面に関連する記事

画像をSUBMITボタン代わりに使う

ラジオボタンとラジオボタングループを使う 

ラジオボタンとラジオボタングループを使う 

チェックボックスを使う。 

HTMLのタグの閉じ忘れで例外が発生する!

プルダウンリストとマルチセレクトボックスを使う。

今度はテキストエリアで複数行入力する。 

テキストボックスの入力と基本的なチェックを使う。

 

参照画面・画面遷移に関連する記事

参照画面:テーブルを使い、行毎に色分けした一覧表を表示する。 

参照画面:条件に一致した時のみHTML要素を出力する。

セッションを使って画面間で情報を受け渡す 

画面遷移:GET時のリクエストパラメータを受け取る 

日本語しか使わなくても、i18N対応はする意味がある。

 

入力チェックに関連する記事

入力チェック:未入力時に空文字が渡される仕様を回避する。 

入力チェック:@Patternと正規表現で独自チェックする。

入力チェック:アノテーション定義を自分で作る。(再利用版)

入力チェック用アノテーション定義を自分で作る。(独自実装版)

入力チェック:複数項目の相関チェックアノテーションの作り方

 

データアクセス・その他に関連する記事

データアクセス:Jprepositoryを使って簡単にCRUDする。 

データアクセス:ネイティブなSQL文を実行する 

クラスパス内の静的ファイルにアクセスする 

SpringBootだとログの書き出しも楽ちんです。 

SpringBootプロジェクトでJUNIT4を使った単体テストをする。