【テストコンテナーズ】
Testcontainers とは?
最終更新:
💡 テスト用の本物環境をコードで『ポン』と用意
テストコードの中からDockerなどのコンテナを起動して、データベースやメッセージブローカーなどの実物を使ったテストを実行できるオープンソースのライブラリ。
📌 このページのポイント
そこでTestcontainersだよ。テストコードの中からDockerで本物のMySQLやPostgreSQLを起動して、使い終わったコンテナは片付けてくれるんだ。テストが途中で異常終了しても、Ryukという見張り役のコンテナが後始末をする仕組みもあるよ
毎回コンテナを起動するの?遅くならない?
データベース以外にも使えるの?
Redis、Kafka、Elasticsearch、LocalStack(AWS互換)など対応モジュールがたくさんあるよ。GenericContainerを使えば任意のDockerイメージもテストで使えるんだ
チームのCIでも動くの?
もっと詳しく知りたい人へ
Docker Desktopがない環境(PodmanやColimaなど)でも使える?
Testcontainers for Javaのドキュメントでは、Docker API互換のコンテナ実行環境が必要とされ、よくテストされているのはLinux上のDockerとMac・WindowsのDocker Desktopだよ。Colima、Podman、Rancher Desktopも設定次第で使えると書かれているけど、これらは日常の開発で継続的にテストされていないため、一部の機能が使えない場合があるとも注意されているんだ。手元で動かないときは、まず接続先のDockerソケットの設定を確認しよう。
まとめ:ざっくりこれだけ覚えればOK!
「Testcontainers」って出てきたら「テストの時だけDockerで本物の環境を立ち上げるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Test Containers」 = テスト用コンテナ
💬 テスト用のコンテナをプログラムから操作するライブラリだから、そのままTest + Containersだよ