24
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaAdvent Calendar 2019

Day 1

Junit5の整理した書き方

Last updated at Posted at 2019-12-01

過去に実践していたJunit5のテストクラスの書き方を備忘録として書き起こします。
皆さんの参考になれば幸いです。

テストクラス置き場

まず、はじめにテストクラスの置き場所です。
スクリーンショット 2019-12-01 12.36.08.png

テストクラスは、プロダクトのクラスとフォルダを分けて置きましょう。
Gradleを使用する場合、src/test/javaが標準フォルダです。

パッケージ名

テストクラスのパッケージ名は、プロダクトのクラスと同じ名称は避けましょう。
しかし、テストクラスとの紐付けは絶対にしたいところです。
なので、「test + テスト対象のパッケージ名」という形が頭使わずにすむかなと思います。

パッケージ名を別にしている理由は、Springを使用した場合、
テストクラスでのDI重複とか対策です。(確か)
同じパッケージ名だと、testフォルダをDIしてテストしたいクラスのDIができなかったので、
パッケージ名の頭から区別できるようにしています。

クラス名

これも頭使わずに、「テスト対象のクラス名 + Test」にしましょう。
同じクラス名だと補完の時にめんどくさいです。

テスト書き方

テスト対象クラス

Greeting.java
public class Greeting {
  
  public String hello() {    
    return "Hello";
  }
  
  public String helloWorld() {
    return "Hello World";
  }
}

テストクラス

GreetingTest.java
class GreetingTest {

  @Nested
  @DisplayName("method : hello")
  public class Hello {

    private Greeting test = new Greeting();

    @Test
    @DisplayName("正常に動作するテストケース")
    public void case1() {
      Assertions.assertEquals("Hello", test.hello());
    }
  }
  
  @Nested
  @DisplayName("method : helloWorld")
  public class HelloWold {
    
    private Greeting test = new Greeting();
    
    @Test
    @DisplayName("正常に動作するテストケース")
    public void case1() {
      Assertions.assertEquals("Hello World", test.helloWorld());
    }
    
  }
}

クラス修飾子

何もつけないのが無難です。
publicとかつけてしまうと補完で表示されてしまうので、見にくいです。

メソッドごとにクラスを分ける

テストクラスでは見やすいように、メソッドごとにテストクラスを分けています。
テストケースを追加する時に、この形がテストケースを追加しやすいです。

インナークラスの名前は、メソッド名がわかりやすいです。

DisplayNameでしっかりテストケースをかく

経験上、テストケースのメソッド名を長くなったりするか、適当になったりして
ひどく読みにくくなります。
そのため、長ったらしいメソッド名をつけるぐらいなら、DisplayNameを使ってしっかりと
テスト内容を書きましょう。

Eclipseのテスト結果確認サンプル

Displayをかくと、カバレッジの画面に反映されるので、よりわかりやすくなります。
スクリーンショット 2019-12-01 12.57.44.png

まとめ

テストクラスは、内容も大事ですけど、同じぐらい整理して書くことも大事です。
形式立てて書くことで、開発の時だけでなく、保守の時も変更しやすいテストクラスを書いて行きましょう。

24
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?