Open6

ソフトウェアテストについて調べている

nakano16180nakano16180

最近仕事でテストコードを書く機会があり、というよりテストコードを書くための土台を整備するのがメインだったのでひたすら調べて読んだものをメモしていくことにした。

nakano16180nakano16180

前提

  • Go/Echo
  • クリーンアーキテクチャ
  • DBアクセスを伴う部分のテストを書きたい
nakano16180nakano16180

Pythonでテストを書いたことはあって、その時はひたすらassert.Equal()みたいなことをしていた記憶がある
しかし、Goには標準のテストパッケージtestingにassertはなさそう。
上の記事で触れられてるパッケージ入れてもいいけど、いったん標準パッケージだけでやっていく

nakano16180nakano16180

テスト環境を作成する!golangでクリーンな単体テスト環境をdocker testで作成する方法について – APPSWINGBY Developers Blog
E2E / Integration Testing in Golang with ory/dockertest | by Sidharthan Chandrasekaran Kamaraj | The Bug Shots | Medium
How To Run Go Integration Tests Using Docker | The GoDev Corner

一番簡単そうに思ったのがDBコンテナを立てる方法。ローカルで開発中はDBコンテナ立てているだろうから、それにつないで一通り操作をすればテストできるともいえる。
問題はこれをCIで自動化したいとき。CI上でもDBコンテナとアプリケーションを立ち上げることはできるだろうけど、立ち上げスクリプトを書く必要がありそうという点が引っ掛かりポイント

dockertestをつかえば、Goのコードでコンテナの立ち上げから片付けまで書けるらしい