Javaの単体テストはWebアプリでも必要?画面・Controller・Service・DAOの役割で考える|確認問題の回答例

Schoo Java入門 中級 第3回 単体テストによるビジネスロジック検証

このページは、Javaの単体テストはWebアプリでも必要?Serviceのビジネスロジックを確認する考え方の確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。

確認問題の回答例

Serviceの単体テストで確認しやすいのは、業務上のルールに基づいて結果を決める処理です。

処理Serviceの単体テストで確認しやすいか理由
ログイン画面のボタンの色確認しにくい画面表示やCSSの確認に近く、Serviceの業務ルールではないため
購入金額に応じた送料計算確認しやすい金額から送料を決める業務上の判断だから
会員ランクによる割引率の判定確認しやすい会員ランクという条件から割引率を決める処理だから
検索結果が画面に何件表示されるかServiceだけでは判断しにくいDAOの検索結果、Controllerの受け渡し、画面表示が関わる場合があるため
在庫数が足りない場合に注文できないようにする判定確認しやすい在庫数と注文数から注文可否を決める業務上の判断だから

ポイントは、画面の見た目ではなく、業務上の判断や計算になっているかを見ることです。金額、ランク、在庫数のような値から結果を決める処理は、Serviceの単体テストで確認しやすい対象です。

Serviceで確認しやすいコード例

@Test
void testCalculateShippingFee() {
    OrderService service = new OrderService();

    assertEquals(500, service.calculateShippingFee(3000));
    assertEquals(0, service.calculateShippingFee(5000));
}

このテストでは、画面やControllerではなく、送料を決めるServiceのメソッドを直接確認しています。

元の記事に戻る

Javaの単体テストはWebアプリでも必要?Serviceのビジネスロジックを確認する考え方