Ginkgo

"깅코"라고 읽으면 된다.

설치

ginkgo 설치

$ go get github.com/onsi/ginkgo/ginkgo

matcher 라이브러리 gomega 설치.

$ go get github.com/onsi/gomega

실행

  • ginkgo -r : 하위 디렉토리의 테스트 코드를 모두 탐색하며 테스트를 수행한다.
  • ginkgo watch -r : 실행을 종료하지 않고, 변경 사항이 생길 때마다 테스트를 수행한다.

vim에서 사용하기

[[/vim-go-env]]{vim-go}를 사용하고 있다면 :help vim-go에서 다음과 같은 질문/답변을 찾아볼 수 있다.

How do I run focused ginkgo tests?

You must set this environment variable in your '.vimrc':

    let $GINKGO_EDITOR_INTEGRATION = "true"

ginkgo 테스트 코드 예제

테스트를 돌려보기 위해 두 파일을 작성해 보았다.

  • main.go
package main

func one() int {
    return 1
}
func two() int {
    return 2
}
func name() string {
    return "name"
}
  • main_test.go
package main

import (
    "testing"

    . "github.com/onsi/ginkgo"
    . "github.com/onsi/gomega"
)

func TestGinkgo(t *testing.T) {
    RegisterFailHandler(Fail)
    RunSpecs(t, "Test functions Suite")
}

var _ = Describe("Test functions",
    func() {
        Context("sample", func() {
            It("one should return 1", func() {
                Expect(1).To(Equal(one()))
            })
            It("name should return name", func() {
                Expect("name").To(Equal(name()))
            })
        })
    },
)
  • go test 또는 ginkgo -r을 실행해보면 테스트를 수행한다.

image

  • vim-go의 :GoTest로도 잘 돌아간다.
  • vim-go의 :GoCoverageToggle를 통해 coverage를 검사해 보면 two 함수를 테스트하는 케이스가 없으므로 two 함수에 빨간색을 칠해준다.

coverage