書籍「JUnit実践入門 」の復習用チャート

# 概要

当方、渡辺修司さんの著作「JUnit実践入門」を学習したのですが、
いざ書くとなると知識がさっと出てこないという問題に直面。
そこで、知識の体系化をしたい、忘れた時にさっと書籍を復習できるようにしたいと思い
復習用のチャートシートを作成しました。

JUnitを構成する各要素を項目ごとにまとめ、該当するページのみを記載しているので、
項目を見て概要を思い出す。思い出せなければ該当ページを見返す。という風に
学習内容の復習に使えるかと思います。

# 第1章 JUnitチュートリアル
## JUnitの概要
- JUnitおよび、テスティングフレームワークが主に提供する機能とは何か(3つ)  
→ 3ページ
- テスティングフレームワークは何をサポートするのか  
→ 3ページ
- JUnitを利用するにあたり必要なライブラリとその違いは何か(2つ)  
→ ６ページ
- テストケースとは何か  
→ 24-25ページ
- 複数のテストケースをまとめたものをなんというか  
→ 24-25ページ

# 第2章 ユニットテスト
## テスト技法
- 以下のテスト技法は、どういった内容のテストであるか  
    - ホワイトボックステスト(27ページ)
    - ブラックボックステスト(27ページ)
    - 同値クラステスト(28ページ)
    - 境界値テスト(28-29ページ)

## ユニットテストの概要
- 最近のユニットテストには「品質の向上」以外に優先される目的がある。それは何か  
→ 31-32ページ

## テストパターン
- アンチパターン、デザインパターンのように、テストにもパターンがある。
xUnit Test Patternsが提唱する以下のパターンは具体的にどういったテストを表しているか
    - 自動化されたテスト(33-34ページ)
    - 不安定なテスト(34-35ページ)
    - ドキュメントとしてのテスト(35-36ページ)
    - 問題の局所化(36ページ)
    - 不明瞭なテスト(36-37ページ)
    - 独立したテスト(37ページ)

- シングルトンオブジェクトがテストにおいてアンチパターンとなりうる要素とは何か(4つ)
→ 38ページ

# 第3章 テスティングフレームワーク
## テスト用語
- JUnitにおけるテストメソッドの実装の制約は何か(3つ)  
→ 40ページ
- テスト対象となるクラスやオブジェクトのことをなんというか(略称も合わせて)  
→ 43ページ
- テスト対象が返す値と、テスト対象が返すべき値をそれぞれなんというか  
→ 44ページ
- テストを行いやすいメソッドが持つ性質とは何か(3つ)  
→ 45ページ
- ４フェーズテストについて、どのような概要のフェーズで構成されるか  
→ 47ページ
- テストにおいて必要とされる全てのデータ、状態を総称してなんというか  
→ 47-48ページ

## アノテーション
- JUnitが提供する主なアノテーション(6つ)とそれらに設定できる属性はどのようなものか  
→ 50-56ページ

# 第4章 アサーション
## Assertクラス
- Assertクラスの所属するパッケージと提供する2つのメソッドはなにか  
→ 60-63ページ

## Matcher API
- CoreMatchersクラスが所属するパッケージと提供する主なAPI(6つ)は何か  
→ 67-70ページ
- JUnitMatchersクラスが所属するパッケージと提供する主なAPI(2つ)は何か  
→ 70-71ページ
- その他、Hamcrestが提供するMatcherクラスにはどのようなものがあるか(8つ)  
→ 72ページ
- カスタムMatcherを以下の手順で作成せよ(73-79ページ)  
1) Matcherクラスを作成する  
2) ファクトリメソッドを作成する  
3) xxxメソッド(値の検証メソッド)をオーバーライドして実装する  
4) xxxメソッド(エラーメッセージの定義メソッド)をオーバーライドして実装する

# 第5章 テストランナー
## JUnitの実行
- JUnitで行うユニットテストはどのような流れで実行されるか(３ステップ)  
→ 81ページ

## テストランナー
- テストランナーとは一体どんな機能か  
→ 82ページ
- JUnitの提供する主なテストランナーには何があるか(5つ)、また、それぞれについて実装せよ  
→ 84-91ページ

# 第6章 テストのコンテキスト
## コンテキスト(構造化)のパターン
- 以下のコンテキストのパターンは具体的に何に着目しているか
    - 共通のデータに着目する  
    → 99-100ページ
    - 共通の状態に着目する  
    → 101-103ページ
    - コンストラクタのテストを分ける  
    → 103ページ

# 第7章 テストフィクスチャ
## テストフィクスチャとは
- フレッシュフィクスチャとは、どういった戦略か  
→ 107ページ
- フィクスチャのセットアップ方法について、どのようなものがあるか(4つ)  
→ 110-119ページ

# 第8章 パラメータ化テスト
- パラメータを利用しやすくするためのオブジェクトをなんというか  
→ 132ページ
- パラメータをフィルタリングするためのクラスおよびそのパッケージは何か  
→ 137-138ページ
- パラメータ化テストの抱える問題点(2つ)とはなにか

# 第9章 ルール
## ルールとは
- ルールとはどういった場合に使用する機能か、また、どういった特徴があるか  
→ 141ページ
- ルールの宣言には２種類のアノテーションがある。それぞれの挙動はどのように異なるか  
→ 142-143ページ

## JUnitの提供するルール
- JUnitの提供するルールにはどのようなものがあるか(8つ)  
→ 143-154ページ

## カスタムルール
- カスタムルールを作成せよ  
→ 154-157ページ
- ルールの実行順序を制御したい場合に使用するクラスは何か  
→ 158-159ページ

# 第10章 カテゴリ化テスト
- スローテスト問題への対策にはどういったものがあるか(4つ)  
→ 163-165ページ
- カテゴリ化テストを以下の手順で実行せよ(165-168ページ)  
1) カテゴリクラスを作成する  
2) カテゴリを設定する  
3) テストスイートクラスを作成する
- カテゴリ化テストを適用する代表的なケースは何か(3つ)

# テストダブル
- テストダブルとは何か  
→ 181ページ
- スタブとモックの違いは何か  
→ 186ページ

## Mockito
- モックオブジェクトを作成せよ  
→ 191-192ページ
- スタブメソッドのデフォルトの戻り値は何が設定されるか  
→ 192ページ
- 以下のスタブメソッドを定義せよ  
    - 標準的な戻り値のあるスタブメソッド(192-193ページ)
    - 例外を送出するスタブメソッド(193ページ)
    - void型を返すスタブメソッド(193-194ページ)
    - 任意の引数をとるスタブメソッド(194ページ)
- スタブメソッドの実行状態(実行回数など)を検証せよ  
→ 194-196ページ
- Mockitoのspyメソッドを使用し、スパイオブジェクトを使用したテストを実装せよ  
→ 196-198ページ

# 書籍の紹介

- [JUnit実践入門 ── 体系的に学ぶユニットテストの技法](https://www.amazon.co.jp/JUnit%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-%E4%BD%93%E7%B3%BB%E7%9A%84%E3%81%AB%E5%AD%A6%E3%81%B6%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E6%8A%80%E6%B3%95-WEB-PRESS-plus-ebook/dp/B07JL78S95)