Go言語 Ginkgo使ってみた

Go言語のテストのフレームワークであるGinkgoを使用してみました

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

Ginkgo
Go言語でGinkgoを利用してBDDしてみた
スポンサーリンク
レクタングル広告(大)
レクタングル広告(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする