4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Git-hookで始める自動テストの第一歩

4
Posted at

テストしてますか?

せっかくテストを作ったのに、それを実行したのはずっと前。
久しぶりに実行してみたらエラー!なぜ?
テスト対象のクラスやメソッドの仕様が変わっていた!

テスト作って満足していませんか?テストを放置していませんか?
せっかくテストを作ったのに動かしていないのでは意味がありません。

しかし人間は完璧ではありません。時が経つと忘れてしまいます。
ではどうするか?自動で動くようにすればいいんですよ。

Git-hook

ではローカルでテストを動かす仕組みは何かと考えたら、Gitを使っている場合はいいものがあります。
「Git-hook」というものです。
これは特定のGitアクションが発生した時にスクリプトが動く仕組みです。

フックできるアクションは色々あります。テストを行うタイミングとしてはコミットを打つ時がちょうど良さそうなので、そのタイミングでスクリプトが動くようにしましょう。
スクリプトのサンプルは.git/hooksにあります。この中に特定の名前で保存したシェルスクリプトが、特定のタイミングで実行されます。
コミット時に実行したい場合は、スクリプト名をcommit-msgにします。中身はただのシェルスクリプトなので、この中に実行したいコマンドを入力します。
ちなみにGit for windowsを使っている方でも、普通に実行したいコマンドを入れれば大丈夫です。

Pythonだと、Pytestと呼ばれるモジュールがあり、gitプロジェクトルートでpython -m pytestを実行すると、すべてのテストが実行されるので、このコマンドを記述しておきます。
すると、コミット時にテストが走り、テストが失敗するとコミットフローが中断されます。なのでテストに合格するまでコミットが打てなくなります。
これで忘れずにテストが動かせますね!!

まとめ

  • テストは動かさないと意味がない。
  • しかし動かすのを忘れてしまう。人間だもの。
  • だったら自動化させよう!

ありがとうございました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?