Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Testcontainers/2024-11-20-llt32
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoshi SAKAO
November 20, 2024
Programming
0
75
Testcontainers/2024-11-20-llt32
社内のLTイベント「えるLT Vol.32 オンライン」で発表した資料です
Satoshi SAKAO
November 20, 2024
Tweet
Share
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
Pkl/2024-04-17-llt31
ottijp
0
110
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
170
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
300
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
170
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
190
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
170
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
110
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
110
ncurses/2021-05-12-llt21
ottijp
0
220
Other Decks in Programming
See All in Programming
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
960
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
AtCoder Conference 2025
shindannin
0
1k
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
120
組織で育むオブザーバビリティ
ryota_hnk
0
170
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
160
CSC307 Lecture 09
javiergs
PRO
1
810
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
190
Data-Centric Kaggle
isax1015
2
760
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.7k
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
540
2026年 エンジニアリング自己学習法
yumechi
0
130
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
160
Become a Pro
speakerdeck
PRO
31
5.8k
Navigating Weather and Climate Data
rabernat
0
97
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
71
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
89
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
Transcript
Testcontainers Satoshi SAKAO えるLT Vol.32 2024-11-20  1
話すひと 2 🏢 インフォコム株式会社 サービスマネジメント室 👨🔧 ソフトウェアエンジニア 🛠 Node.js /
AWS / IoT / iOS (Swift) / Linux 💖 猫,B'z,テクテクライフ(ランク: 30),数学 Satoshi SAKAO @ottijp.com 𝕏 @ottijp
Now playing... 3 https://bsky.app/pro fi le/ottijp.com/post/3l7slr7xewc2z
Motivation 4 https://www.thoughtworks.com/radar/languages-and-frameworks/summary/testcontainers
Motivation 5 https://www.thoughtworks.com/radar/languages-and-frameworks/summary/pkl
Testcontainers • テストコードでDockerコンテナを起動し, "本物"を使ったintegration testを実現するライブラリ • コンテナで動かせるならなんでも(DB,MQ,ブラウザ,etc) • 自前でテスト実行前にコンテナ作ることもできるが, よりinstant
& disposableにコンテナを使える • AtomicJar社が開発.2023年12月にDockerが買収. 6
E ff ect 7 https://speakerdeck.com/twada/automated-test-knowledge-from-savanna-202406- fi ndy-dev-prod-con-edition?slide=30
E ff ect 8 https://speakerdeck.com/twada/automated-test-knowledge-from-savanna-202406- fi ndy-dev-prod-con-edition?slide=32
Example 9 import { expect } from 'chai' import {
GenericContainer } from 'testcontainers' import redis from 'async-redis' it('redis works', async () => { const container = await new GenericContainer('redis') .withExposedPorts(6379) .start() const client = redis.createClient( container.getFirstMappedPort(), container.getHost() ) await client.set('key', 'value') expect(await client.get('key')).to.equal('value') await client.quit() await container.stop() }) redisコンテナの作成 reidsクライアントの作成と テストデータのセット テストデータの検証 クリーンアップ
Features • テスト間でコンテナを再利用する • 実行中コンテナでコマンドを実行する • コンテナのログストリームを取得する • ネットワークを作成しコンテナへアタッチする •
イメージをビルドする • composeを起動する • ホストのポートをコンテナにexposeする • コンテナ起動とテストを同期する(Wait strategy) 10
Others • modules • 特定のタスクを行いやすくするためのユーティリティ • Testcontainers Cloud • Dockerランタイムを提供
• Testcontainers Desktop • コンテナのデバッグ,ポートフォワード 11
Supported runtimes • Docker • Podman • Colima • Rancher
Desktop 12 export DOCKER_HOST=unix://${HOME}/.rd/docker.sock export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
所感 • テストでコンテナをとても簡単に,信頼性高く利用できる • 環境構築やファイルシステムをいじるプログラムなどの テストとも相性が良さそう • Rancher Desktop対応が助かる 13
14 Appendix
Supported languages • Java • Go • .Net • Node.js
• Python • Rust • Haskell • Ruby 15
Wait strategy • ポートのリスン待ち(デフォルト) • Timeout • ログの出力待ち • Health
Check • httpレスポンス • コマンド実行結果 • カスタムストラテジ • またはこれらの組み合わせ 16
Refs • 公式ページ https://testcontainers.com/ 17