テスト用のデータをどう用意するか

ここでのテストは主にユニットテストを想定しています。

はじめに

以前、同僚とペアプロしている時にテストデータをどう用意するかで盛り上がったでのその時の事を整理、メモしてみる。

ここで挙げる方法以外にもあるかもしれないが、そこで上がったのは以下の3つ。

それぞれ Pros/Cons をざっと考えてみた

予めテストデータ(e.g csv)を用意しておいてテストで必要なデータを読み込む

Pros

Cons

テスト内で生成する

Pros

Cons

テストで使うデータを各テスト毎にSQLファイルを用意して生成する

Pros

Cons

さいごに

個人的な意見としては、マジックナンバーとかでこの ID に何か意味があるのかな…?とかを考えたくないので多少冗長だとしてもテスト内でテストデータを用意する方が好き。
過去のプロジェクトではテストデータを生成しやすくるユーティリティーメソッドを用意したりして凌いでいた気がする。

何がいい/わるいとかはなくて、テスト対象だったりデータの変更頻度だったりで用途にあったように準備すればいいと思う。