10.1. 単体テスト概要¶
10.1.1. はじめに¶
本章では、Macchinetta Server Framework (1.x)を使用したシステムにおける、JUnitを用いた単体テストについて提示する。
ここでの単体テストのスコープはレイヤまたはレイヤ間結合とし、テストに関するアクティビティのうち、テスト実装とテスト実施に関して解説する。なお、解説するテスト実装は参考例でありシステムの品質を保証するためのテスト方針については、別途検討いただきたい。
10.1.2. 単体テストガイドラインが示すこと¶
本章では、以下のOSSライブラリを使用したレイヤまたはレイヤ間のテスト実装方法について説明する。
10.1.2.1. 単体テストで利用するOSSライブラリ構成¶
10.1.2.1.1. テスティングフレームワーク¶
Javaのテスティングフレームワークとして、JUnitを使用する。
10.1.2.1.2. アサーション¶
10.1.2.1.3. モック化¶
テスト対象のメソッドが依存するクラスをモック化するためのライブラリとしてMockitoを使用する。
10.1.2.1.4. DIコンテナ¶
テスト用のDIコンテナとしてSpring TestのDI機能を使用する。
10.1.2.1.5. MVCフレームワーク¶
テスト用のMVCフレームワークとしてSpring MVC Test Frameworkを使用する。
10.1.2.1.6. トランザクション管理¶
テスト用のトランザクション管理としてSpring Testのトランザクション管理機能を使用する。
10.1.2.1.7. データアクセス¶
テスト用のデータアクセスとして、Spring TestまたはDBUnitとSpring Test DBUnitを使用することを想定している。
-
Spring Testは
@Sql
アノテーションやJdbcTemplate
などを使用してSQLを発行する機能を提供している。
-
- Spring Test DBUnitは、Spring Framework上でDBUnitを利用する際の支援ライブラリのため、DBUnitと組み合わせて使用する。DBUnitの提供するデータベースのセットアップ、状態の検証などの機能をアノテーションベースで実装する機能を提供している。
10.1.2.2. 単体テストで利用するOSSライブラリのバージョン¶
単体テストで利用するOSSライブラリの一覧を以下に示す。
以下のOSSライブラリの中で、特にSpring Test(MockMvc)、Mockitoの使い方については、単体テストで利用するOSSライブラリの使い方で詳細を説明する。
Type |
GroupId |
ArtifactId |
Version |
Spring Boot |
---|---|---|---|---|
JUnit |
junit |
junit |
4.13.2 |
* |
Hamcrest |
org.hamcrest |
hamcrest |
2.2 |
* |
Mockito |
org.mockito |
mockito-core |
5.7.0 |
* |
Spring Test |
org.springframework |
spring-test |
6.1.3 |
* |
DBUnit |
org.dbunit |
dbunit |
2.7.3 |
|
Spring Test DBUnit |
com.github.springtestdbunit |
spring-test-dbunit |
1.3.0 |
Note
Hamcrest 2.1より、hamcrest-core
とhamcrest-library
にあたるモジュールがhamcrest
に統合されたため、実施したいアサーションによりhamcrest-library
のような依存関係を追加する必要がなくなった。
なお、Maven依存関係としてはhamcrest-core
とhamcrest-library
を引き続き利用することができるが、実態としてはすべてhamcrest
を参照する形となる。
10.1.2.3. 単体テストの実装¶
10.1.3. 対象読者¶
本章は、このドキュメントの対象読者に加えて以下の知識・経験があることを前提としている。
JUnitを使用した単体テストを行ったことがある
10.1.4. 単体テストの動作検証環境¶
種別 |
名前 |
---|---|
OS |
Windows 10 |
JVM |
Java 17 |
IDE |
Spring Tool Suite 4.17.1.RELEASE (以降「STS」と呼ぶ。設定方法はSTS4の設定手順を参照されたい。) |
Build Tool |
Apache Maven 3.8.6 (以降「Maven」と呼ぶ) |
RDBMS |
PostgreSQL 15.4 |