Go用テストツールGoConveyの紹介
GoConveyというGo用テストツールがあります。
特徴は下記7点だそうです。
- Brilliant Web UI
- Gracefully examine failing tests
- Resolve panics and build failures
- HTML5 desktop notifications
- Readable terminal output
- Responsive design for limited screen space
- Test code generator
個人的には、下記の点が気に入っています。
- ブラウザ上でテスト結果が表示される
- ソース保存時にテストが実行される
- テストが書きやすい
インストール方法は、いつものようにgo getでインストールすればOKです。
$ go get github.com/smartystreets/goconvey
実行方法は下記の通り。
$ $GOPATH/bin/goconvey
実行後、ブラウザを起動して下記URLにアクセスしてください。
http://localhost:8080
今はテストがないので、 0/0 assertions と表示されています。
早速テストを書くことにしますが、折角なのでテストコード生成機能を使ってみます。
画面上部の鉛筆アイコンをクリックすれば、テストコードの生成画面が出てきます。
インデントしない文字列はテスト関数名、インデントした部分はテストのスコープを意味するそうです。
とりあえず、うるう年計算プログラムのテストとなるスコープを書いてみました。
生成されたソースをコピペし、必要なimport文を書いて、テストコードのテンプレートが出来上がりです。
package main
import (
. "github.com/smartystreets/goconvey/convey"
"testing"
)
func TestLeapYear(t *testing.T) {
Convey("西暦が400で割り切れる年はうるう年である", t, nil)
Convey("400で割り切れない場合、西暦が100で割り切れる年はうるう年ではない", t, nil)
Convey("100で割り切れない場合、西暦が4で割り切れる年はうるう年である", t, nil)
Convey("4で割り切れない場合、うるう年ではない", t, nil)
}
保存した直後にGoConveyの画面が勝手にテストを実行します。
Convey関数の第3引数にテストを書くことになるのですが、ここではnilが入っているのでスキップ扱いになります。
テストコードと実装を書いて保存した結果、仮実装に問題があってFAILと出ました(当たり前)
アサーションの書き方は、Assertions · smartystreets/goconvey Wikiをご参照ください。
よく使うものはGeneral Equalityに書かれている下記になるかと思います。
第1引数がactual, 第2引数がassertionの内容、あれば第3引数がexpectedになります。
- So(thing1, ShouldEqual, thing2)
- So(thing1, ShouldNotEqual, thing2)
- So(thing1, ShouldResemble, thing2) // a deep equals for arrays and structs
- So(thing1, ShouldNotResemble, thing2)
- So(thing1, ShouldPointTo, thing2)
- So(thing1, ShouldNotPointTo, thing2)
- So(thing1, ShouldBeNil)
- So(thing1, ShouldNotBeNil)
- So(thing1, ShouldBeTrue)
- So(thing1, ShouldBeFalse)
- So(thing1, ShouldBeZeroValue)
また、 画面上部のベルをクリックして白から濃いグレーに変更すると、Chrome / SafariなどでDesktop Notificationが有効になります。ビルドの結果を、ブラウザを見ずに結果の通知を見ることができるわけです。
本テストは、いつものコマンドラインからのgo testでも実行することが出来ます。
結果も見やすいですし、アサーションも書きやすいですので、普段からGoConveyを使うのがオススメです。
本記事でGoConveyに興味が出ましたら、是非GoConveyをお試しください。
Author And Source
この問題について(Go用テストツールGoConveyの紹介), 我々は、より多くの情報をここで見つけました https://qiita.com/todogzm/items/aa2d9f7771820d9519c1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .