0. 導入
go get github.com/onsi/ginkgo/ginkgo
go get github.com/onsi/gomega/...
1. 使用
テストするコードがあるディレクトリに移動します。今回は、「 c/Users/username/go/src/mylib/figureutil 」とします。
次にテストするコード(今回は, 四角形の面積の計算をするrectangle.go)を用意します。
(すでにある場合はそれを使用します)
package figureutil
type Rectangle struct {
Height int
Bottom int
}
func (r Rectangle) CalcArea() int {
return r.Height * r.Bottom
}
「ginkgo bootstrap」をターミナルで実行します。実行すると以下のファイルが自動生成されます。
package figureutil_test
import (
"testing"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
func TestFigureutil(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Figureutil Suite")
}
「ginkgo generate rectangle」をターミナルで実行します。実行すると以下のファイルが自動生成されます。
package figureutil_test
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "mylib/figureutil"
)
var _ = Describe("Rectangle", func() {
})
var _ = Decsribe(“Rectangle”, func() {})
の中にテストを書きます。
例えば, 四角形の底辺を5, 高さを10を設定し, 面積50を得るテストは以下のようになります。
package figureutil_test
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "mylib/figureutil"
)
var _ = Describe("Rectangle", func() {
rectangle := Rectangle{Height: 10, Bottom: 5}
Describe("面積を求める関数", func() {
Context("底辺と高さが正の整数", func() {
It("底辺*高さが返却される", func() {
Expect(rectangle.CalcArea()).To(Equal(50))
Ω(rectangle.CalcArea()).Should(Equal(50))
})
})
})
})
テストを実行するには, 「ginkgo」をターミナルで実行します。実行結果は以下のようになります。
Running Suite: Figureutil Suite
===============================
Random Seed: 1566871782
Will run 1 of 1 specs
+
Ran 1 of 1 Specs in 0.009 seconds
SUCCESS! — 1 Passed | 0 Failed | 0 Pending | 0 Skipped
PASS
Ginkgo ran 1 suite in 2.7340474s
Test Suite Passed
2. 参考URL
GinkgoGo言語でGinkgoを利用してBDDしてみた