Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goのテスト ケースは逐次、テストは並列

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Mitsuhiro Okada Mitsuhiro Okada
August 23, 2024
82

Goのテスト ケースは逐次、テストは並列

・自己紹介
・テストが「CIでは通る」が「ローカルで通らない」
・実装しているテストの例
・問題のあったテストの例
・何が問題だったか
・具体的な実装の例
・まとめ
---
Goのテストは、並列に実行される
Goのテストケースは、逐次実行される
defer は、関数の最後に実行される
lockの解除タイミングを誤ると処理がぶつかることがある。

Avatar for Mitsuhiro Okada

Mitsuhiro Okada

August 23, 2024
Tweet

Transcript

  1. 4 自己紹介 • 岡田光博(みつ) • 現在は、新規プロダクトでバックエンド!(4月〜) ◦ もともとは、フロントエンド(インターン) • 趣味

    ◦ カメラ ◦ 音楽(最近は、R&B) ◦ 食べ飲み歩く(三茶の混混ってところおすすめ) • アイスブレイク
  2. 13 何が問題だったか • defer は、関数の最後に実行される • patch() と unpatch() は内部でmutexのlockを使っている

    • テストケースは逐次実行されるが、 Test_XXXは、並列に実行される • Test_XXX() とその他の Testが一緒に走り、unlock 前に次の lock をかけようとした ↓ • 本来、よりスコープの狭いt.Run内のコールバック関数で patch() の unpatch()(mutex のlock解除)を実行しないといけない