タグ

2024年5月4日のブックマーク (2件)

  • Goにおけるテスト用DB分離のテクニック

    この記事は Go言語 Advent Calendar 2023 4日目の記事です。 導入 GoMySQLやPostgreSQLのようなリレーショナルデータベースをDocker上で立ち上げテストに利用する手法は一般的です。この場合、異なるパッケージからの並行テスト実行によりテストデータの追加やクリーンアップ、データベース操作が重複することがあります。これにより、テストの数が増えるにつれ操作が競合したり、他のテストケースによる影響で期待される結果が得られないことがあるためFlakyテスト(不安定なテスト)の問題が生じます。 この記事では、テスト中のデータベース操作に関連する問題に対処する方法として TestMain 関数を使用し、テスト用データベースをパッケージごとに分離するアプローチについて紹介します。この方法は、テストの信頼性を向上させると同時にデータベース操作の競合を避けるための効果的

    Goにおけるテスト用DB分離のテクニック
    tjmtmmnk
    tjmtmmnk 2024/05/04
  • GoにはなぜXという機能がないのか? 〜テスト関数ごとの暗黙的な初期化処理の実現を考察する | gihyo.jp

    つきなみGo GoにはなぜXという機能がないのか? 〜テスト関数ごとの暗黙的な初期化処理の実現を考察する はじめに 筆者はGoだけではなく、Scalaなど他言語を扱った経験もあり、しばしばGoには他の言語にあるXという機能がなぜないのだろう?と考えることがあります。 たとえば、テスト関数ごとに暗黙的に呼ばれる初期化関数の定義があります。データベースに対するDrop・Create・Insertなどの処理をテストごとに実行したい場合に定義できると便利でしょう。同じ処理を都度書いているとテストケースが増えてきた時にメンテナンス性が下がってしまったり、初期化処理を追加し忘れてしまう恐れなどもあります。 しかし、Goにはこのようなテスト関数ごとに暗黙的に実行される初期化処理を定義できません。Goが他言語に劣っているようにもみえますが、当にそうなのでしょうか? 公式のFAQにもあるように、とある機能

    GoにはなぜXという機能がないのか? 〜テスト関数ごとの暗黙的な初期化処理の実現を考察する | gihyo.jp
    tjmtmmnk
    tjmtmmnk 2024/05/04