読者です 読者をやめる 読者になる 読者になる

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

人事評価と人工知能について考えたことがメインテーマです。

STS 3.8.3(Spring Boot 1.5.1)で単体テスト(JUNIT4)する方法

Spring Boot入門 プログラミング

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