Skip to content

stretchr/testifyではEqualとGreaterで引数の意味が逆

古くからstretchr/testify/assertというアサーション用のライブラリがあるけれど、これは関数ごとに引数の順序が異なるので非常に混乱する。

具体的には、assert.Equal において引数の順序は

func Equal(*testing.T, expected, actual any, format ...any) bool

のように expected が先に置かれる。このときテストで失敗すると以下のように出力される。

Terminal window
$ go test
Error: Not equal:
expected: 2
actual : 1

だけど Greater のシグネチャは

func Greater(*testing.T, e1, e2 any, format ...any) bool

となっており、この意味は e1e2 よりも大きいことを意味する。なので e1actuale2expected の状態に近い。順序が逆になっているのは混乱するし間違いの元なので困る。