지정된 파일에서 테스트 사례를 실행하는 방법은 무엇입니까?


205

패키지 테스트 사례는 여러 파일에 흩어져 있는데, 실행 go test <package_name>하면 패키지의 모든 테스트 사례가 실행됩니다.

그래도 모두 실행할 필요는 없습니다. 파일에 go test정의 된 테스트 케이스 만 실행하도록 실행할 파일을 지정하는 방법이 있습니까?

go 

답변:


326

두 가지 방법이 있습니다. 쉬운 방법은 -run플래그 를 사용하고 실행하려는 테스트의 이름과 일치하는 패턴을 제공하는 것입니다.

예:

$ go test -run NameOfTest

자세한 내용은 문서 를 참조하십시오.

다른 방법은 실행할 테스트가 포함 된 특정 파일의 이름을 지정하는 것입니다.

$ go test foo_test.go

그러나 캐치가 있습니다. 다음과 같은 경우에 잘 작동합니다.

  • foo.gopackage foo있습니다.
  • foo_test.gopackage foo_test있고 'foo'를 가져옵니다.

경우 foo_test.gofoo.go있는 동일한 패키지 (일반적인 경우) 당신은 빌드에 필요한 모든 다른 파일 이름을 지정해야합니다 foo_test. 이 예에서는 다음과 같습니다.

$ go test foo_test.go foo.go

-run패턴 을 사용하는 것이 좋습니다 . 또는 가능한 경우 / 언제든지 항상 모든 패키지 테스트를 실행하십시오.


1
-run제발 (간단한) 방법으로 자세히 설명해 주 시겠습니까? 그에 대한 수동 참조를 찾을 수 없습니다.

1
당신은 또한 그것에 대한 정보를 찾을 수 있습니다go help testflag
Jeffrey Martinez

명령을 사용하면 go test utils.go utils_test.go출력은 ok command-line-arguments 0.002s입니다. 테스트를 실행하지 않습니다. 이 테스트 모드를 사용하려는 이유는 패키지에 많은 파일이 포함되어 있고 utils를 제외하고는 아직 컴파일되지 않기 때문입니다. 그래서 다른 파일에 대해 workinqg 전에 utils를 마무리하고 싶습니다. 어떻게해야합니까?
chmike

테스트 할 때 기록 된 것을 보려면 -v(verbose) 플래그를 언급 할 가치가 있습니다. 문서에서-v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds.
robstarbuck

121

@zzzz의 답변은 대부분 완전하지만 다른 사람들이 참조 된 문서 를 파지 않아도되도록 다음과 같이 패키지에서 단일 테스트를 실행할 수 있습니다.

go test packageName -run TestName

테스트가 존재하는 파일 이름이 아니라 테스트 이름을 전달하려고 합니다.

-run당신이 테스트 클래스에 테스트 실행을 제한 할 수 있도록 플래그는 실제로 정규식을 받아들입니다. 문서에서 :

-run regexp
    Run only those tests and examples matching the regular
    expression.

28
해당 패키지 이름을 주목할 가치가 전체 패키지 이름, 예를 들어 "github.com/you/stuff/a/b/c"입니다
garbagecollector

1.9.3은 패키지의 상대 경로도 허용합니다.

2
이유를 모르지만 어떤 이유로 든 패키지 이름 앞에 "./"를 지정해야합니다.
Roozbeh Zabihollahi

12

단일 테스트를 실행할 때 일반적으로 다음을 수행합니다.

go test -run TestSomethingReallyCool ./folder1/folder2/ -v -count 1

-count 1또한 캐시되지 않고 매번 테스트가 실행되도록합니다. 경쟁 조건에 대해 테스트하고 때로는 실패하는 테스트를 수행 할 때 유용합니다. 모듈을 사용하지 않는 Go 버전에서는 설정을 통해 동일한 결과를 얻을 수 GOCACHE=off있지만 Go 모듈과의 상호 작용은 좋지 않습니다.


6

intelliJ IDEA go-lang 플러그인 (및 jetbrains Gogland에서 가정)에서 실행> 편집 구성 에서 테스트 종류를 파일로 설정할 수 있습니다

이동 파일에 이동 테스트 생성


2
Gogland에서 테스트 파일을 마우스 오른쪽 버튼으로 클릭하고 "run foo_test.go"를 선택하면 테스트로 패키지를 빌드 한 다음 해당 테스트 파일의 모든 테스트 이름이 포함 된 정규식을 -run 플래그에 전달합니다. 정말 유용한 기능입니다.
Eloff

4
alias testcases="sed -n 's/func.*\(Test.*\)(.*/\1/p' | xargs | sed 's/ /|/g'"

go test -v -run $(cat coordinator_test.go | testcases)

2
go test -v ./<package_name> -run Test

테스트 결과 캐싱을 방지합니다.

go test -count=1 ./<package_name> -run Test

0
go test -v -timeout 30s <path_to_package> -run ^(TestFuncRegEx)
  • TestFunc는 go해당 패키지 의 테스트 파일 안에 있어야합니다.
  • 단일 테스트 사례를 실행하기 위해 일련의 테스트 사례 또는 정확한 테스트 사례 함수와 일치하는 정규식을 제공 할 수 있습니다. 예를 들어-run TestCaseFunc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.