JUnit 実践入門

ジェイユニット ジッセン ニュウモン

体系的に学ぶユニットテストの技法

JUnit 実践入門の表紙
プログラミング
著者:
渡辺修司(ワタナベ, シュウジ)
出版社:
技術評論社
出版日:
2012年12月
ISBN:
9784774153773
シリーズ:
WEB+DB press plus シリーズ
在庫:
在庫あり
4.42(20 件 / 楽天ブックス)

なぜ注目されているか

言及数
86位
総合126位 ↓ 9 ランクダウン 言及 34 件・うち記事 28 件を掲載
03520222023202420252026

書籍紹介

Java プログラマを対象とした JUnit によるユニットテストの実践ガイド。ユニットテストの基本概念から、テストコードの記述方法や拡張機能まで、JUnit に関する内容をほぼ網羅。テスト駆動開発などユニットテストを基盤とする開発手法やツールも紹介。本書で解説するユニットテスト技法を実践し、身に付けるための演習問題を収録した。チートシート付き。

技書の森解説

Java でユニットテストを書き始めると、JUnit の使い方そのものよりも「何をどうテストすれば良いのか」で手が止まる人は少なくありません。『JUnit 実践入門』 (渡辺修司 著、技術評論社、2012 年 11 月刊、WEB+DB PRESS plus シリーズ) は、副題「体系的に学ぶユニットテストの技法」のとおり、JUnit の基本的な使い方から拡張機能、テストパターンまでを網羅的に扱い、さらにデータベースや Android のテスト、ビルド支援ツール / カバレッジ測定ツール / 継続的インテグレーション / テスト駆動開発といった周辺技術をユニットテストの視点から説明する一冊です。版元の紹介では JUnit を Java テスティングフレームワークのデファクトスタンダードと位置づけ、対象読者として Java プログラマ全般と、ユニットテストの効果的な活用方法に興味のある方を挙げています。巻頭には和田卓人氏による「推薦のことば」が収められています。

全 5 部 20 章の構成、JUnit チュートリアルから演習問題まで

構成は全 5 部 20 章で、付録 A から F と巻頭付録の JUnit チートシートが付きます。Part 1「JUnit 入門」は第 1 章の JUnit チュートリアルでプロジェクトを作成し、テスト対象クラスとテストクラスを書いて実行するところから始め、第 2 章でソフトウェアテストの目的や限界とテスト技法を、第 3 章で xUnit フレームワークとしての JUnit の記法を押さえます。Part 2「JUnit の機能と拡張」は第 4 章から第 10 章にかけて、アサーション、テストランナー、テストのコンテキスト、テストフィクスチャ、パラメータ化テスト、ルール、カテゴリ化テストを 1 章ずつ掘り下げる部分で、Hamcrest が提供する Matcher やスローテスト問題への対策もここに含まれます。Part 3「ユニットテストの活用と実践」は第 11 章のテストダブル、第 12 章のデータベースのユニットテスト、第 13 章の Android のテスト、第 14 章のコードカバレッジと、実務で壁になりやすい題材が並びます。Part 4「開発プロセスの改善」は継続的テスト、テスト駆動開発、振舞駆動開発の 3 章、Part 5 は第 18 章から第 20 章の演習問題です。付録では開発環境と Eclipse の設定、H2 Database、Android 開発環境、Jenkins のセットアップに加え、付録 F に本書利用環境のバージョンがまとめられています。

JUnit 4 を体系的に学ぶ意味と、テストダブルの位置づけ

ユニットテストの難しさは、フレームワークの API を覚えることではなく、テスト対象を外部依存から切り離し、失敗したときに原因がすぐ分かる単位で検証を書くことにあります。フィクスチャの準備、ルールによるテストクラスの拡張、パラメータ化テスト、カテゴリ化といった仕組みを場当たり的に覚えると、動くテストは書けても壊れにくいテストにはなりません。Part 2 がこれらを 1 章ずつ切り分けている構成は、機能の一覧としてではなく、テストコードの構造をどう組み立てるかという観点で JUnit 4 を読み直す助けになります。第 11 章のテストダブルはその延長線上にあり、テスタビリティを高めるリファクタリングとメソッドの抽出から、モック とスタブによる置き換え、Mockito によるモックオブジェクトへと進みます。第 12 章では Web 三層構造アーキテクチャを前提にパーシステンス層をスタブで置き換える考え方と、DbUnit によるデータベースのテストを扱い、外部システムに依存するコードをどうテスト可能にするかという実務でつまずきやすい壁に、設計と道具の両面から向き合います。

ユニットテストを開発プロセスに組み込む Part 4 の読みどころ

テストを書くことと、テストが開発の役に立ち続けることは別問題です。Part 4 は第 15 章の継続的テストで、早期からテストする、自動的にテストする、繰り返しテストするという考え方を示したうえで、Maven によるビルドプロセスの自動化、バージョン管理システムによる継続的テストの運用、Jenkins による継続的インテグレーションへと進みます。第 16 章の テスト駆動開発 は、設計する、テストコードを書く、プロダクションコードを書く、リファクタリングを行う、次のサイクルを始めるというサイクルとして説明され、第 17 章の振舞駆動開発では受け入れテストの自動化とテスト駆動開発との違いを扱います。第 14 章の コードカバレッジ で C0 (命令網羅) / C1 (分岐網羅) / C2 (条件網羅) の基準とカバレッジツールの利用を押さえておくと、テストの網羅率を測る指標と、テストを回し続ける仕組みの両方が手に入ります。

Java プログラマ全般に向く前提と、2012 年刊ならではの注意点

Java の基本文法を理解していることが前提で、版元が対象に挙げるのは Java プログラマ全般と、ユニットテストの効果的な活用方法に興味のある方です。テストを一度も書いたことがない人でも第 1 章のチュートリアルから入れる一方、すでに JUnit を使っている人には Part 2 以降の体系化と、Part 5 の演習問題 (状態を持たないメソッドのテスト、例外を送出するメソッドのテスト、副作用を持つメソッドのテスト、境界値のテスト、システム時間に依存するテスト、外部システムに依存するテスト、サーブレットのテストなど) が腕試しになります。注意点は刊行時期です。本書は 2012 年 11 月刊で、扱う JUnit は 4 系 (目次には JUnit 3 スタイルのテストを扱うコラムもあります) であり、Android 開発環境や Maven / Jenkins / Eclipse の設定手順は付録 F に記された当時のバージョンが前提です。2026 年時点の JUnit や周辺ツールとはバージョンが異なるため、手順をそのまま再現するには差分の読み替えが必要で、Java 以外の言語のユニットテストを学びたい人にも本書は直接の答えにはなりません。

著者の渡辺修司氏は、版元プロフィール (刊行時) によれば札幌在住のプログラマで、地元ではコミュニティ活動を通じて Java やテスト駆動開発の啓蒙活動を行い、業務では開発プロセスの改善や開発環境整備を行うことが多いとされています。本書もテストの書き方で終わらず、ビルド / カバレッジ / 継続的インテグレーションまでを 1 冊でつなぐ点に価値があります。Java の業務コードにこれからテストを足していく人、既存のコードにテストダブルを使ってテストを入れたい人、チームでテストの書き方を揃えたい人には、投じた時間の回収が早い一冊です。テスト関連の本を横断して比べたい場合は テスト本ガイド の観点も参考になります。JUnit の API を眺めるだけでは身につかないユニットテストの技法を、演習まで含めて体系的に習得したい人にとって、堅実な出発点になります。

言及した記事 (28 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: