JUnit

【初心者向け】Javaのテストってなに?〜JUnit5で学ぶテストの基本〜

suu に投稿

■ テストってなに?なぜ必要?

テストとは簡単にいうと「このプログラム、ちゃんと正しく動いてるかな?」を確認する作業です。

入力に対して、正しい結果が返ってくるかエラーが起きてもちゃんと処理できるかプログラム同士がうまく連携できているか

…など、いろんな視点からチェックします。

◆ テストの種類って?

実際の開発では、いくつかの段階に分けてテストを行います。

テストの種類

内容

単体テスト

小さな部品(関数やクラス)が正しく動くか

統合テスト

複数の部品をつなげたときにうまく動くか

システムテスト

全体として期待通りに動作するか

Spring Bootにてディレクトリ構成を見直した際にbeanの参照が上手くいかない際の注意点

nori に投稿
概要

今回は、Spring boot環境で開発していた際、ディレクトリ構成を修正が必要になり修正をしていた際の原因や解決方法を記載します。

ディレクトリ構成の修正後、単体テスト実行時に以下のようなbeanが読み込めないエラーが発生しました。

単体テスト実行時のエラー(部分的に書き換えています)

カバレッジの上げ方

MAXIMUM に投稿

タグ

JUnitテストケースを作成したけれど、カバレッジを上げたい!となった時のひとつの例を上げる

例えば、以下のような正常系のテストケースがあったとする

// 正常系のテスト
@Test
public void testAddition() {
    Calculator calculator = new Calculator();
    int result = calculator.add(2, 3);
    assertEquals(5, result);
}

mockitoのdoAnswerを使ったユニットテスト方法

nori に投稿

タグ

概要

今回は、業務にて処理内でコピーしたファイルを同じ処理内で削除する処理でIOExceptionを発生させ例外処理が行われるかをテストするユニットテストを作成した。
そこで使用したmockitoのdoAnswerを使いユニットテストを作成したため、mockitoのdoAnswerの使用方法についてサンプルと合わせて説明する。

mockitoのdoAnswerの使用方法

mockitoのdoAnswerは以下のような記述で使用することができる。

モックを利用したコントローラのテスト方法

nori に投稿

タグ

概要

今回は、モックを使用したコントローラクラスのテスト方法についてサンプルと合わせて説明する。

モックを利用したコントローラのテスト方法

テスト対象のコントローラクラスが依存するクラスをモック化する場合のテスト方法を以下のサンプルで示す。

バリデーションの単体テスト方法

nori に投稿

タグ

概要

今回は単体テスト実施時にバリデーションの検証を行ったため、方法について調べたことをサンプルと合わせて説明する。

バリデーションの単体テスト方法

バリデーションが付与さてれているbean(form)クラスの入力チェックを行う。
バリデーションが付与さてれているbeanクラスを以下に示す。

@Data
class TestBean {

    @NotNull(message = "not null!!")
    private String name;

}

入力チェックを検証を行う方法を以下のサンプルに示す。

モックを利用するサービスクラスのテスト方法

nori に投稿

タグ

概要

今回はモックを利用したサービスクラスの単体テストの実装方法についてサンプルと合わせて説明する。

モックを利用するサービスクラスのテスト方法

テスト対象(サービスクラス)を@Injectアノテーションで呼び出す際のcontext.xmlのサンプルはモックを利用せず、DBにアクセスするサービスクラスのテスト方法に記載している。

サービスクラスの単体テストのサンプルを以下に示す。
以下のサンプルはリポジトリをモック化し、テスト対象のメソッドでモック化したメソッドが呼び出されていることとテスト対象の戻り値を検証している。

モックを利用ぜず、DBにアクセスするサービスクラスのテスト方法

nori に投稿

タグ

概要

今回は依存クラスを利用したサービスクラスの単体テストの実装方法についてサンプルと合わせて説明する。

モックを利用ぜず、DBにアクセスするサービスクラスのテスト方法

テスト対象(サービスクラス)を@Injectアノテーションで呼び出す際以下のサンプルのようにcontext.xmlに記述する。
また、リポジトリを依存関係を使って呼び出す方法はリポジトリの単体テスト方法 に記載している。

リポジトリの単体テスト方法

nori に投稿

タグ

概要

今回は、業務でリポジトリの単体テストを実施したため、テスト方法や設定などをサンプルと合わせてあげたいと思います。

リポジトリの設定方法

context.xmlにて<mybatis:scan>を用いてリポジトリのパスをしていすることでテスト時に@Injectで依存関係の設定する。 以下のサンプルをcontext.xmlに追加する。

<mybatis:scan base-package="リポジトリのパス"/>
DBアクセス方法

リポジトリのDBアクセスを行う場合、context.xmlにてDBのbean定義を行う。 今回はh2 databaseを使用する設定を以下に記す。

単体テストでのログの出力内容の検証方法

nori に投稿

タグ

概要

今回は単体テスト時にログの出力内容を検証をすることになったため、ログの出力内容の検証の方法で調べたことをサンプルと合わせてあげたいと思います。

出力されたログの検証方法

出力されたログを検証する際、検証前に以下のサンプルのように値を設定する。