【Golang】VSCodeで自動生成されるテストコードをカスタマイズする

こんにちは。Goのテスト、書いていますか?
私はめちゃめちゃ書いています。

VSCode拡張機能(vscode-go)を入れることで、テストコードを自動生成することができることを最近知ったのですが、これがとても便利です。

使い方は以下の記事でまとめられています。

kdnakt.hatenablog.com

これはめちゃめちゃ便利なのですが、デフォルトだと少し物足ないところがあったので、カスタムテンプレートを作成しました。

GitHub - Magaming/gotests-templates

vscode-goは内部でgotestsを使っているので、それ用のテンプレートを用意している形です。
具体的には次のようなことをしています。

  • go-cmpを使う
    • 標準だと reflect.DeepEqualで比較しているが、これだとtime.Time型を含んだ構造体の比較とかで死ぬ
      • go-cmpは、そこだけ無視して比較ができるのでめちゃめちゃ便利
  • %v --> %#v にする
    • フィールド名が出たほうがデバッグに役立ちそうなのでそうしている
  • あとはメッセージの文言少し変えているけどまぁこれは好みの問題

テンプレートをローカルに置いて、VSCodeのsetting.jsonに設定を加えれば反映されてあとはハッピーです。

"go.generateTestsFlags": [
  "-template_dir",
  "/your_local_directory/gotests-templates/templates"
]

皆様もテンプレート作って幸せな生活をしてはいかがでしょうか。