Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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