TIL: Go에서 테스트 건너뛰기

Go 테스트 프레임워크 및 도구 체인에는 모든 실행의 일부가 되는 것을 원하지 않는 경우 테스트를 건너뛸 수 있는 멋진 기능이 있습니다.

기본 구현이 있다고 가정해 보겠습니다.

package shorttest

import (
    "fmt"
    "time"
)

func DoUnimportantStuff() uint8 {
    fmt.Println("Doing unimportant stuff")

    time.Sleep(10 * time.Second)

    return 1
}

func DoImportantStuff() uint8 {
    fmt.Println("Doing important stuff")

    return 1
}


그리고 해당 테스트 스위트가 있습니다.

package shorttest

import "testing"

func TestImportant(t *testing.T) {
    got := DoImportantStuff()
    if got != 1 {
        t.Errorf("Important stuff not correct, needed %d", got)
    }
}

func TestUnimportant(t *testing.T) {
    if testing.Short() {
        t.Skip("skipping test in short mode.")
    } else {
        got := DoUnimportantStuff()
        if got != 1 {
            t.Errorf("Unimportant stuff not correct, needed %d", got)
        }
    }
}


개발 중이고 빠른 피드백을 원할 때 장기 실행되고 중요하지 않은 테스트가 끝날 때까지 기다리지 않고 가능한 한 빨리 중요한 기능에 대한 피드백을 받는 데 매우 관심이 있습니다.

우리가 테스트할 때 대기 시간을 관찰할 것입니다.

$ go test
Doing important stuff
Doing unimportant stuff
PASS
ok      shorttest   10.364s


그런 다음 --short 플래그로 테스트 스위트를 실행하여 중요하지 않은 테스트의 실행을 건너뛸 수 있습니다.

❯ go test --short
Doing important stuff
PASS
ok      shorttest   0.116s


중요하지 않은 장기 실행 테스트에서 --short를 통해 testing.Short() 처리를 추가하는 것을 기억해야 합니다.

리소스 및 참조


  • Go Command: Testing Flags
  • Go Package testing: Skipping

  • my TIL collection에서 해제

    좋은 웹페이지 즐겨찾기