OSS探訪GitHubでログイン

JUnitの試験中だけDockerコンテナを起動し、実物に近い依存サービスとの接続を検証するJavaライブラリ

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
8,749
主要言語
Java
ライセンス
MIT
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

Testcontainers for Javaは、データベースやメッセージ基盤などを試験の開始時にDockerコンテナとして用意し、終了時に破棄する統合試験ライブラリです。開発者ごとの手動環境を減らし、実際の通信境界を含む試験を再現できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

何を検証できるか

JUnit連携でコンテナの開始と終了を試験の期間に合わせ、既知のログやポートを準備完了条件にできます。汎用GenericContainerに加え、主要データベース向けの専用モジュールがあります。

出典:[1][2][3][6]

向いている用途

どの試験に合うか

SQL方言、接続設定、キュー動作など、モックだけでは見落としやすい外部サービスとの統合を継続的に確かめたいJavaプロジェクトに向きます。固定例はAlpineのログをJUnitで確認します。

出典:[1][2]

導入前の確認

実行前に確認する点

2.0系はJava 17以上を前提とし、実行には利用可能なDocker互換環境とイメージ取得用ネットワークが必要です。試験用コンテナは本番サービスの容量・可用性を再現しません。LICENSEはMITです。

出典:[3][4][5]

参考にした公式資料

  1. [1]testcontainers/testcontainers-java README at 2.0.5(2026-10-05)
  2. [2]Testcontainers for Java official documentation(2026-10-05)
  3. [3]Testcontainers for Java 2.0.5 source(2026-10-05)
  4. [4]testcontainers/testcontainers-java LICENSE at 2.0.5(2026-10-05)
  5. [5]testcontainers/testcontainers-java GitHub metadata(2026-10-05)
  6. [6]Testcontainers 2.0.5 Wait strategy API source(2026-10-05)
編集部からの補足

外部サービスとの境界をモックから一段進めて確かめたいJavaチームに適します。まず小さなイメージのログ待機と自動破棄を確認し、その後に利用中のデータベース用モジュールへ広げてください。

3ステップで試す

  1. 1

    固定版のJUnitプロジェクトを作る

    Java 17以上、Maven、稼働中のDocker互換環境が必要です。Testcontainers 2.0.5とJUnitを固定した一時プロジェクトを作ります。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/testcontainers-java.XXXXXX") && cd "$demo" && mkdir -p src/test/java/demo && printf '%s\n' '<project xmlns="http://maven.apache.org/POM/4.0.0"><modelVersion>4.0.0</modelVersion><groupId>demo</groupId><artifactId>container-test</artifactId><version>1</version>' '<properties><maven.compiler.release>17</maven.compiler.release></properties>' '<dependencies><dependency><groupId>org.testcontainers</groupId><artifactId>testcontainers</artifactId><version>2.0.5</version><scope>test</scope></dependency><dependency><groupId>org.testcontainers</groupId><artifactId>testcontainers-junit-jupiter</artifactId><version>2.0.5</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.11.4</version><scope>test</scope></dependency></dependencies>' '<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.14.1</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.5.4</version></plugin></plugins></build></project>' > pom.xml
  2. 2

    使い捨てコンテナの試験を書く

    Alpine 3.22を試験期間だけ起動し、readyログを最大30秒待つJUnit試験を書きます。

    printf '%s\n' 'package demo;' 'import org.junit.jupiter.api.Test;' 'import org.testcontainers.containers.GenericContainer;' 'import org.testcontainers.junit.jupiter.Container;' 'import org.testcontainers.junit.jupiter.Testcontainers;' 'import org.testcontainers.containers.wait.strategy.Wait;' 'import java.time.Duration;' 'import org.testcontainers.utility.DockerImageName;' 'import static org.junit.jupiter.api.Assertions.assertTrue;' '@Testcontainers class ContainerTest {' ' @Container static GenericContainer<?> alpine = new GenericContainer<>(DockerImageName.parse("alpine:3.22")).withCommand("sh","-c","echo ready; sleep 30").waitingFor(Wait.forLogMessage(".*ready.*\n",1).withStartupTimeout(Duration.ofSeconds(30)));' ' @Test void capturesContainerOutput() { assertTrue(alpine.getLogs().contains("ready")); }' '}' > src/test/java/demo/ContainerTest.java
  3. 3

    コンテナの出力を検証する

    JUnitを実行し、コンテナのログにreadyが含まれることを確認します。試験終了時の破棄はTestcontainersが管理します。

    mvn -q -Dtest=ContainerTest test
公式READMEで確認

成長

成長の推移 · 直近30日

8,749 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
6
Open PR
213

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • java
  • docker
  • docker-compose
  • junit
  • test-automation
  • jvm
  • testing
  • hacktoberfest
  • integration-testing
Stars
8,749
Forks
1,936
Watchers
132
Open Issues
416
Contributors
441
所有者種別
Organization
主要言語
Java
ライセンス
MIT
リポジトリ最終更新
2026/10/05

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?