SeleniumのDockerコンテナをJUnitから管理するTestcontainerというライブラリがあり、以前紹介しました。
今回はTestcontainerで複数のコンテナを起動し、ネットワーク接続させてみたいと思います。
FluentなAPIで複数のコンテナを起動できる
やり方はとても簡単なのでコードを見れば大抵の人は何をしているのかが理解できると思います。以下のコンテナをTestcontainerから起動しているコードを示します。※このコードは個人的に開発しているライブラリのテストコードなので無関係なコードが含まれます。
- Testcontainerが用意しているWebDriverコンテナ
- Spring MVC で作成したウェブアプリ
@BeforeEach
メソッドの中身でコンテナの設定&起動を行っています。まずはじめの行でネットワークを新規に作成し、続くコードブロックでWebDriverコンテナ、Spring MVCコンテナを設定しています。最後のコードブロックではそれぞれのコンテナを起動させています。
コンテナ間の接続方法は公式サイトの以下のページで詳しく説明されています。
31, 32行目ではコンテナが起動してHTTPによる通信が可能になるのを待機します。このコードがなければコンテナの起動後にすぐにテストが実行されてしまい、思ったようにテストを実行できません。このような待機の方法は色々とあるみたいで公式サイトの以下に載っています。