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. アサーション¶
アサーションに使用するライブラリとしてHamcrestを使用する。 JUnit4が標準でサポートしているアサーションライブラリである。
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
- Spring Testは
@Sql
アノテーションやJdbcTemplate
などを使用してSQLを発行する機能を提供している。
- Spring Testは
- DBUnit とSpring Test DBUnit
- Spring Test DBUnitは、Spring Framework上でDBUnitを利用する際の支援ライブラリのため、DBUnitと組み合わせて使用する。 DBUnitの提供するデータベースのセットアップ、状態の検証などの機能をアノテーションベースで実装する機能を提供している。
10.1.2.2. 単体テストで利用するOSSライブラリのバージョン¶
単体テストで利用するOSSライブラリの一覧を以下に示す。
なお、以下のOSSライブラリはあくまで一例であり、実際は業務要件に合わせたライブラリを検討いただきたい。 また、本章内のアプリケーション自体を動作させるために利用するOSSライブラリ一覧については、 利用するOSSのバージョンを参照されたい。
以下のOSSライブラリの中で、特にSpring Test(MockMvc)、Mockitoの使い方については、単体テストで利用するOSSライブラリの使い方で詳細を説明する。
Type | GroupId | ArtifactId | Version | Spring Boot |
---|---|---|---|---|
JUnit | junit | junit | 4.12 | * |
Hamcrest | org.hamcrest | hamcrest | 2.1 | * |
Mockito | org.mockito | mockito-core | 3.1.0 | * |
Spring Test | org.springframework | spring-test | 5.2.3.RELEASE | * |
DBUnit | org.dbunit | dbunit | 2.5.4 | |
Spring Test DBUnit | com.github.springtestdbunit | spring-test-dbunit | 1.3.0 | |
Apache POI | org.apache.poi | poi-ooxml | 3.17 |
Note
Hamcrest 2.1より、hamcrest-core
とhamcrest-library
にあたるモジュールがhamcrest
に統合されたため、実施したいアサーションによりhamcrest-library
のような依存関係を追加する必要がなくなった。
なお、Maven依存関係としてはhamcrest-core
とhamcrest-library
を引き続き利用することができるが、実態としてはすべてhamcrest
を参照する形となる。
Warning
利用するOSSのバージョンのとおり、本フレームワークで利用するApache POIは4.xであるが、単体テストでのみ3.17を利用する。 これは、本フレームワークで利用しているDBUnitがApache POI 3.17に依存しており、4.xではDBUnitが利用するいくつかのメソッドが廃止されているため、Excel形式のデータ定義ファイルを読み込む際に実行時エラーとなることが確認されているためである。
10.1.2.3. 単体テストの実装¶
単体テストはアプリケーションのレイヤ化に沿った以下のレイヤ単位で実装している。レイヤまたはレイヤ間のテスト方法を レイヤごとのテスト実装で説明する。 レイヤ単位に当てはめられない共通機能や、機能特有のテスト方法は、機能ごとのテスト実装で説明する。
10.1.4. 単体テストの動作検証環境¶
本章は、以下の環境で動作検証をしている。 他の環境で実施する際は、本章をベースに適宜読み替えること。
種別 | 名前 |
---|---|
OS | Windows 7 |
JVM | Java 1.8 |
IDE | Spring Tool Suite 3.9.1.RELEASE (以降「STS」と呼ぶ) |
Build Tool | Apache Maven 3.3.9 (以降「Maven」と呼ぶ) |
RDBMS | PostgreSQL 9.6.5 |
Warning
本ガイドラインではSTS 4.xではなく、3.xの利用を推奨している。詳細は STS 4.x について を参照されたい。