10.2. Microshed Testing ライブラリーでの統合テストの作成
コンテナーを使用する異なる環境にアプリケーションをデプロイすることができます。Testcontainers フレームワークを使用すると、テスト環境でコンテナーを使用できます。Microshed Testing は、MicroProfile および Jakarta EE 開発者向けの Java ライブラリーで、実稼働環境でアプリケーションをテストします。Microshed Testing は Testcontainers フレームワークを実装し、テストで開発および実稼働パリティーをサポートします。
MicroShed Testing を使用すると、以下の例のようなインテグレーションテストを作成できます。
@MicroShedTest public class BasicJAXRSServiceTest { @Container public static ApplicationContainer app = new ApplicationContainer() .withAppContextRoot("/myservice"); @RESTClient public static PersonService personSvc; @Test public void testGetPerson() { Long bobId = personSvc.createPerson("Bob", 24); Person bob = personSvc.getPerson(bobId); assertEquals("Bob", bob.name); assertEquals(24, bob.age); assertNotNull(bob.id); } @Test public void testGetUnknownPerson() { assertThrows(NotFoundException.class, () -> personSvc.getPerson(-1L)); } }
@MicroShedTest アノテーション
は、リポジトリーの Dockerfile ドキュメントを検索し、Docker コンテナーでアプリケーションを起動し、テストの開始前にアプリケーションが準備されるのを待機します。@ Container アノテーション
は PersonService クラスの REST Client プロキシーを注入します。これは、実行中のアプリケーションコンテナーで HTTP 要求を送信するのに役立ちます。@RESTClient アノテーションは
、HTTP POST リクエストを実行中のコンテナーに送信します。PersonService#createPerson エンドポイントをトリガーし、生成された ID を返します。生成された ID を使用すると、HTTP GET リクエストを送信して、作成されたレコードを読み取ることができます。JSON 応答は、JSON-B トークンを使用して Person オブジェクトに自動的に変換します。@ Test アノテーション
は HTTP GET リクエストを送信し、-1
ID がない Person オブジェクトを検索します。アノテーションは、アプリケーションコンテナーが HTTP 404 例外を返すことをアサートします。