Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Testcontainers/2024-11-20-llt32
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoshi SAKAO
November 20, 2024
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Testcontainers/2024-11-20-llt32
社内のLTイベント「えるLT Vol.32 オンライン」で発表した資料です
Satoshi SAKAO
November 20, 2024
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
Pkl/2024-04-17-llt31
ottijp
0
140
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
210
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
370
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
200
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
240
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
200
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
130
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
130
ncurses/2021-05-12-llt21
ottijp
0
260
Other Decks in Programming
See All in Programming
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.2k
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.4k
GraphQL の onError と Nullability のこれから
quramy
0
210
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
290
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
300
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
150
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
180
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.4k
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
800
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
310
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
109
250k
Navigating Team Friction
lara
192
16k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
400
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
530
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
1
300
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
590
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
Why Our Code Smells
bkeepers
PRO
340
58k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.3k
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