2
0

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 1 year has passed since last update.

[java] JUnit作成を助けてくれる方たち

Last updated at Posted at 2023-03-08

配属先で初めて出会ったJUnit。大苦戦し先輩方にたくさんお世話になりました。。

よく利用するけど「この確認のときに使っていたアレなんだっけ......」となることが今でも多いので、個人メモ程度にまとめる。

  • assertNull()
    • 確認したい値がNullであるかチェックするためのもの。
    • Nullだった場合、通過し、Nullじゃなかった場合、通過できない(確か「実行したらNullじゃなかったよ」みたいなエラー文言が出た気がする。。)
      • 書き方例:assertNull(piyo);
  • assertNotNull()
    • assertNullの逆。
    • Nullじゃないことを確認できる。
  • 返す値がbooleanのメソッドの確認短縮方法
    • 以下のように記載すれば簡単に確認できる。わざわざ変数を作る必要が無い。
      • assertThat(hogeClass.booleanMethod(stringPiyo), is(true));
  • doNothing()
    • voidメソッドを正常終了させる。mock化しているクラスに対して利用可能。
      • 書き方例:doNothing().when(hogeClass).hugaMethod(anyObject());
        • この時、hogeClassは@Mockで宣言していること。@Spyだとエラー吐かれてた気がする。。
  • doReturn()
    • メソッドの返す値を設定できる。利用する時はクラスが@Mock、または@Spyに設定されていること。
      • 書き方例:doReturn("hoge").when(hogeClass).hugaMethod(anyObject());
  • fail()
    • tryCatchを利用したテストを作るときに利用。
    • 書き方例
      /** エラーを検出せず、想定した値が返ってくるパターン */
      try {
        String piyo = testLogic.testMethod(true);
        assetThat(piyo, is("piyopiyo");
      } catch (SystemException e) {   
        fail();
      }
      
    • 書き方例2
      /** エラーを検知し、catchに移ることの確認パターン */
      try {
        String piyo = testLogic.testMethod(true);
        fail();
      } catch (SystemException e) {
        assetThat(e.getMessage(), is("piyopiyo");
      }
      
    • ただ、tryCatchしたテストを実行した場合、fail()側に到達するとエラーが分からないことがある。そんな時は一度tryCatchをコメントアウトして、JUnit実行するとエラー箇所を把握できる。

JUnitの注意点

  • privateなメソッドはPowerMockを利用すれば返却値を設定できる。
    • PowerMockは便利だけど、カバレッジ実行時はすべて赤に染まって分岐が目で見えなくなる。。(緑表示が無くなる)
2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?