TDD
エアテスト駆動飲み会で Golang をはじめて触ったので記録のこします
- 同イベントでは過去に bash も TDD が簡単に出来る を書きました
環境
- Replit を使うことで、実行環境を作る時間を省略し、ブラウザ越しに参加者同士でコードを共有します
- Golang を普段さわってる人はゼロ
分かった事
-
xxx_test.go
というファイル名にする -
go test
で実行できる -
package main
だと何か不都合らしい - 関数
Testxxx
を用意する -
t *testing.T
をパラメータに受ける - アサーションは無い
- 条件式を書き
t.Errorf()
を呼ぶ - ここまで分かったら FizzBuzz くらいなら TDD できる
最小構成サンプル
main.go
package a
import "strconv"
func a(i int) string {
return strconv.Itoa(i)
}
main_test.go
package a
import "testing"
func TestA(t *testing.T) {
actual := a(1)
expected := "1"
if actual != expected {
t.Errorf("1のとき文字列1になる")
}
}
そのうち調べること
- なぜ package main はダメなんだろう
- アサーション無しの理由が気に入ったので他言語でも似たようなことできるかな
- python の unittest で pandas.DataFrame 扱えないみたいなこと
- assert_frame_equal があるのは知ってるけど、じゃあほかの任意のオブジェクトはどうよ?みたいな
- java なら Object の equals をオーバーライドしとけばいいじゃん、みたいな事なのかな?
おしまい