Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

shellでTDDするshunit2 その5:Table Driven Testで似たテストを自動化

Table Driven Testをつかうと、似たデータのテストをブン回すときに便利です。

実際のところ

ヒアドキュメントで

while read desc arg want; do
  got=$(fn ${arg})
  rtrn=$?
  assertTrue "${desc}: fn() unexpected error; return ${rtrn}" ${rtrn}
  assertEquals "${desc}: fn() = ${got}, want ${want}" "${got}" "${want}"
done <<EOF
test#1 value1 output_one
test#2 value2 output_two
EOF

あるいは、ファイル数が多くなって手に負えなくなるケースもあるでしょう。
そういう時はテスト用のデータを用意

while read desc arg want; do
  got=$(fn ${arg})
  rtrn=$?
  assertTrue "${desc}: fn() unexpected error; return ${rtrn}" ${rtrn}
  assertEquals "${desc}: fn() = ${got}, want ${want}" "${got}" "${want}"
done </path/to/some/testfile

実際のところ

github.com