IT_World

[Golang] test GoConvey 테스트 프레임워크 라이브러리 본문

Programming language/go lang

[Golang] test GoConvey 테스트 프레임워크 라이브러리

engine 2021. 9. 28. 13:56

GoConvey  : Golang  테스트 프레임워크 라이브러리

GoConvey 설치방법

다운로드 : 

https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받기

mac shell: 

1.설치

$ brew install go

2.버전 업그레이드

$brew upgrade go

ubuntu shell:

1.설치

$ sudo apt-get install golang-go

2.버전 업그레이드

$ sudo add-apt-repository ppa:longsleep/golang-backports

$ sudo apt-get update

$ sudo apt-get install golang-go

3. 또는  go get으로 패키지  설치

$ go get github.com/smartystreets/goconvey

/home/go/GoConvey source code & 패키지 파일 생성

예제

package test
//해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언하지 않고 테스트를 위해 다른 이름 적기

import (
    "testing"
    "github.com/smartystreets/goconvey/convey"
)
//testing과 convey를 가져온다.


func TestFunc(t *testing.T) (
    convey.Convey("starting value", t, func() {
        x := 0
        convey.Convey("incremented", func() {
            x++

            convey.Convey("ShouldEqual", func() {
                convey.So(x, convey.ShouldEqual, 1)
            })
        })

    })
    //테스트 함수를 만들고 값이 증가되었을 때 지정한 값과 같은지 검사할 수 있다.

    convey.Convey("Numeric comparison", t, func() {
        x := 1
        convey.So(x, convey.ShouldBeGreaterThan, 0)
        convey.So(x, convey.ShouldBeLessThan, 2)
        //지정한 값보다 크거나 작은지 검사할 수 있다.


        convey.So(x, convey.ShouldBeBetween, 0, 2)


        convey.So(x, convey.ShouldNotBeBetween, 5, 10)
    })
    //두 수 사이에 존재하는지 검사할 수 있다.

    convey.Convey("Container", t, func() {
        intArr := []int{1, 2, 3}
        intMap := map[int]int{1: 1, 2: 2, 3: 3}
        convey.So(intArr, convey.ShouldContain, 2)
        //슬라이스와 맵으로 수가 포함되는지 검사할 수 있다.

        convey.So(1, convey.ShouldBeIn, []int{1, 2, 3})
        //슬라이스에 포함된 수에서 존재하는지 검사할 수 있다.

        convey.So([]int{}, convey.ShouldBeEmpty)
		 //슬라이스에 포함된 수에서 존재하는지 검사할 수 있다.

		 convey.So([]int{}, convey.ShouldBeEmpty)
		})
		//비어있는지에 대한 여부를 검사할 수 있다.
	
		convey.Convey("String", t, func() {
			convey.So("helloworld", convey.ShouldStartWith, "h")
			convey.So("helloworld", convey.ShouldNotStartWith, "e")
			convey.So("helloworld", convey.ShouldEndWith, "world")
			convey.So("helloworld", convey.ShouldNotEndWith, "hello")
			//문자열의 시작과 끝에 어떤 문자가 있는지에 대하여 검사할 수 있다.
	
			convey.So("helloworld", convey.ShouldContainSubstring, "ow")
			convey.So("helloworld", convey.ShouldNotContainSubstring, "worldhello")
		})
		//단순하게 어떤 문자열이 포함되었는지 검사할 수 있다.
	
		convey.Convey("Typechecking", t, func() {
			convey.So(10, convey.ShouldHaveSameTypeAs, 0)
			convey.So(10, convey.ShouldNotHaveSameTypeAs, "10")
		})
	}
	//검사하려는 값의 타입을 비교할 수 있다.
Comments