- Amazon.co.jp ・本 (272ページ)
- / ISBN・EAN: 9784873117300
作品紹介・あらすじ
合い言葉で覚えるユニットテストのアプローチ!
Javaユニットテストのデファクトスタンダード「JUnit」の解説書。モダンなJava開発においてユニットテストはいかなるアプリケーションを開発する場合にも欠かすことのできないプロセスです。本書では、ユニットテストの基礎からチーム開発でのユニットテストまで、達人プログラマーの実践的テクニックを明らかにします。さまざまなベストプラクティスからわかりやすい合い言葉が作られており、読者はユニットテストでの指針をすぐにマスターできるでしょう。避難は「おかし」、味付けは「さしすせそ」、ユニットテストは「FIRST」!
感想・レビュー・書評
-
【書誌情報】
『実践JUnit――達人プログラマーのユニットテスト技法』
著者:Jeff Langr, Andy Hunt, Dave Thomas
訳者:牧野 聡
2015年09月 発行
272ページ
ISBN978-4-87311-730-0
原書: Pragmatic Unit Testing in Java 8 with Junit
定価:3,080円
Javaユニットテストのデファクトスタンダード「JUnit」の解説書。モダンなJava開発においてユニットテストはいかなるアプリケーションを開発する場合にも欠かすことのできないプロセスです。本書では、ユニットテストの基礎からチーム開発でのユニットテストまで、達人プログラマーの実践的テクニックを明らかにします。さまざまなベストプラクティスからわかりやすい合い言葉が作られており、読者はユニットテストでの指針をすぐにマスターできるでしょう。避難は「おかし」、味付けは「さしすせそ」、ユニットテストは「FIRST」!
[https://www.oreilly.co.jp/books/9784873117300/]
【目次】
賞賛の声
序文
まえがき
第I部 ユニットテストの基礎
1章 初めてのJUnitテスト
1.1 ユニットテストを作成する理由
1.2 JUnitの基礎(テストを作成し、成功させる)
1.2.1 プロジェクトの設定
1.2.2 JUnitテストの構成要素
1.2.3 JUnitの実行
1.3 Arrange-Act-Assert
1.4 テストは本当に行われているのか
1.5 まとめ
2章 JUnitの実践的な利用
2.1 テスト対象を理解する(Profileクラス)
2.2 どんなテストが可能か検討する
2.3 1つ目のパスへのテスト
2.4 2つ目のパスのテスト
2.5 @Beforeメソッドを使った初期化
2.6 残りの作業
2.7 まとめ
3章 さまざまなアサーション
3.1 JUnitでのアサーション
3.1.1 assertTrue
3.1.2 assertThat(何かと何かが等しいことを示す)
3.1.3 重要なHamcrestマッチャー
3.1.4 浮動小数点数の比較
3.1.5 アサーションの説明
3.2 例外を扱う3つの考え方
3.2.1 シンプルな方法(アノテーションの利用)
3.2.2 古い方法(try/catchとfail())
3.2.3 新しい方法( ExpectedExceptionルール)
3.2.4 例外的な状況での例外
3.3 まとめ
4章 テストの構成
4.1 AAAに基づいた一貫性の実現
4.2 ふるまいのテストとメソッドのテスト
4.3 テストと対象のコードの関係
4.3.1 テストと対象のコードの分離
4.3.2 privateなデータの公開、privateなふるまいの公開
4.4 1つの目的に特化したテストの価値
4.5 ドキュメントとしてのテスト
4.5.1 一貫性のある名前
4.5.2 意味のあるテスト
4.6 @Beforeと@Afterに関する補足(初期化と後処理)
4.6.1 @BeforeClassと@AfterClass
4.7 テストと緑のバーの重要性
4.7.1 テストの所要時間を縮める
4.7.2 テストを無視する
4.8 まとめ
第II部 合い言葉で覚えるユニットテスト
5章 FIRST(よいテストとは)
5.1 よいテストはFIRSTである
5.2 Fast(迅速)
5.3 Isolate(テストを隔離する)
5.4 Repeatable(繰り返し可能)
5.5 Self-Validating(自律的検証)
5.6 Timely(適切なタイミングでテストする)
5.7 まとめ
6章 Right-BICEP(テストの対象)
6.1 Right(結果の正しさ)
6.2 Boundary(境界条件)
6.2.1 CORRECTに従った境界条件の設定
6.3 Inverse(逆の関係をチェックする)
6.4 Cross-check(別の方法でチェックする)
6.5 Error(エラーを強制的に発生させる)
6.6 Performance(パフォーマンスの特性)
6.7 まとめ
7章 CORRECT(境界条件の扱い)
7.1 Conformance(適合)
7.2 Ordering(順序)
7.3 Range(範囲)
7.3.1 制約をチェックするマッチャー
7.3.2 制約をチェックする埋め込みのメソッド
7.4 Reference(参照)
7.5 Existence(存在)
7.6 Cardinality(要素数)
7.7 Time(時間)
7.8 まとめ
第III部 より大きな設計の全体像
8章 クリーンなコードをめざすリファクタリング
8.1 リファクタリングとは
8.1.1 リファクタリングを行うべき時
8.1.2 メソッドを抜き出す(次善のリファクタリング)
8.2 メソッドの置き場を決める
8.3 リファクタリングの自動実行と手動実行
8.4 過剰なリファクタリングの是非
8.4.1 メリット(明確で個別のテストが可能)
8.4.2 パフォーマンス面の不安
8.5 まとめ
9章 より大きな設計上の課題
9.1 ProfileクラスとSRP
9.2 新しいクラスの抜き出し
9.3 コマンドとクエリの分離
9.4 ユニットテストを保守するコスト
9.4.1 失敗を防ぐ方法
9.4.2 壊れたテストの修正
9.5 その他の設計上のポイント
9.6 まとめ
10章 モックオブジェクト
10.1 テストでの課題
10.2 厄介なふるまいをスタブで置き換える
10.3 テスト向けの設計変更
10.4 スタブを賢くする(パラメーターの検証)
10.5 モックツールを使ったテストの簡素化
10.6 注入ツールを使った簡素化
10.7 モックを利用する際のポイント
10.8 まとめ
11章 テストのリファクタリング
11.1 現状のテスト
11.2 「テストの臭い」その1(不必要なコード)
11.3 「テストの臭い」その2(アブストラクションの欠如)
11.4 「テストの臭い」その3(無関係な情報)
11.5 「テストの臭い」その4(肥大化したコンストラクタ)
11.6 「テストの臭い」その5(複数のアサーション)
11.7 「テストの臭い」その6(不必要な詳細さ)
11.8 「テストの臭い」その7(誤解を招く構成)
11.9 「テストの臭い」その8(暗黙の意味づけ)
11.10 テストの追加
11.11 まとめ
第IV部 より大きなテストの全体像
12章 テスト駆動開発
12.1 TDDの主なメリット
12.2 シンプルなコードから始める
12.3 2回目の追加
12.4 テストのクリーンアップ
12.5 3回目の小さな追加
12.6 複数の回答への対応(設計の寄り道)
12.7 APIの拡張
12.8 最後のテスト
12.9 ドキュメントとしてのテスト
12.10 TDDの周期性
12.11 まとめ
13章 テストが難しい事柄
13.1 マルチスレッドのコードのテスト
13.1.1 物事はシンプルに
13.1.2 プロフィールのマッチング
13.1.3 アプリケーションロジックの抜き出し
13.1.4 スレッドのロジックをテストするための再設計
13.1.5 スレッド関連のロジックのテスト
13.2 データベースのテスト
13.2.1 QuestionControllerの活躍
13.2.2 データの問題
13.2.3 クリーンな状態でのデータベーステスト
13.2.4 QuestionControllerのモック化
13.3 まとめ
14章 プロジェクトでのテスト
14.1 開発の加速
14.2 共通の理解を深める
14.2.1 ユニットテストの基準を定める
14.2.2 レビューを通じて基準への準拠を促進する
14.2.3 ペアプログラミングでのレビュー
14.3 継続的インテグレーションとの統合
14.4 カバレッジ
14.4.1 望ましいカバレッジの値
14.4.2 100パーセントのカバレッジは本当に望ましいのか
14.4.3 カバレッジの意義
14.5 まとめ
付録A IntelliJ IDEAとNetBeansでのJUnitのセットアップ
A.1 IntelliJ IDEA
A.2 NetBeans
索引詳細をみるコメント0件をすべて表示 -
達人プログラマーな著者による JUnit を利用する実践的なユニットテストの解説。
章立てがきれいにまとまっており、読者自身の知識や目的に応じて読み方を選択しやすくなっている。
実践的なコード例が多数登場する。それぞれのコードで実現したいこと(Why/What)を本文で丁寧に説明するような構成になっているのは素晴らしい。
「第一部 ユニットテストの基礎」を読むことで、JUnit に詳しくない人でもテストコードを読めるようになる。今まで JUnit を使ったことのない人や、JUnit 3 で知識が止まっている人がキャッチアップするには必要十分な説明だ。
「第二部 合言葉で覚えるユニットテスト」を読むことで、無駄のないユニットテストを設計、実装できるようになる。
いわゆる基礎なのだけどキーワードでくくってあるのが面白い。
「第三部 より大きな設計の全体像」では、実際のプロジェクトにも登場しそうなコードを、ユニットテストのテクニックとともに洗練していく様子を具体例で解説している。
「第四部 より大きなテストの全体像」では技術的な課題やコミュニケーションの課題を扱っている。
技術的な課題としては、マルチスレッドプログラムをユニットテスト可能とするまでの1つの手順を紹介している.コミュニケーションの課題としては、プロジェクトのメンバーがユニットテストを使いこなせるようになるための道のりを紹介している. -
JUnitの書き方というよりユニットテストの考え方についての本でした。