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

このページは、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のメソッドを直接確認しています。