Testcontainersはテストの依存関係をコンテナによって解決するオープンソース・ソフトウェアです。コンテナの定義や起動をコードで記述するのが特徴です。
特徴
Testcontainersは下記の言語に対応しています。
- Java
- Go
- .NET
- Node.js
- Python
- Rust
- Haskell
- Ruby
- Clojure
- Elixir
たとえば、Node.jsであれば以下のようにコンテナの定義と起動を行います。
const redis = await new GenericContainer("redis:5.0.3-alpine")
.withExposedPorts(6379)
.withWaitStrategy(Wait.forLogMessage("Ready to accept connections"))
.start();
後はユニットテストを実行するだけです。起動したコンテナは、テストが完了すると破棄されます。
ユースケース
Testcontainersのサイトで上がっているユースケースは以下の通りです。
- データベースなどが関連するインテグレーションテスト
- UI/受け入れテスト
- アプリケーション統合テスト
クラウドサービス
Testcontainersはオープンソース・ソフトウェアですが、クラウドサービスも提供されています。
月間300分までは無料で利用できます。それ以上になると、月35ドル + 0.02ドル/分となります。
デスクトップアプリ
Testcontainersではローカル・クラウドで使えるデスクトップアプリがあります。Windows、Mac、Linuxに対応しています。
Download the free Testcontainers Desktop app