テストコードを書く際に、以下の 4 つのフェーズに分けて考えると整理しやすい。
それぞれのフェーズの目的と具体的な内容について説明する。
テストを実行するための初期状態を設定する。
このフェーズでは、テスト対象のオブジェクトや依存関係を準備し、テストの前提条件を整える。
// テスト対象のクラス
MyClass myObject;
// モックオブジェクトの作成
MockDependency mockDependency;
// モックの期待動作を設定
EXPECT_CALL(mockDependency, SomeMethod()).WillOnce(Return(true));Act フェーズが実施される際の各モックへの呼び出しの期待を設定する。
あわせて戻り値を制御することもある。
// モックメソッドが特定の回数呼び出されることを期待
EXPECT_CALL(mockDependency, SomeMethod()).Times(1);テスト対象のメソッドや機能を実行し、戻り値を得る。
このフェーズでは、Arrange フェーズで準備した状態をもとに、実際にテストを行う。
// テスト対象のメソッドを呼び出す
bool result = myObject.TestedMethod();テストの結果が期待通りであることを確認する。
このフェーズでは、テストの成功または失敗を判断する。
// 戻り値が期待通りであることを確認
EXPECT_TRUE(result);
// オブジェクトの状態を確認
EXPECT_EQ(myObject.GetState(), ExpectedState);これらのフェーズを順番に実行することで、テストコードを整理し、明確で理解しやすいものにすることができる。