내 프로젝트의 모든 테스트를 '테스트'하는 방법은 무엇입니까?


141

go test명령은 *_test.go하나의 디렉토리에서만 파일을 처리합니다.

go test전체 프로젝트를 원합니다. 즉, 테스트는 *_test.godir의 모든 파일 ./과 dir 아래의 모든 chindren tree dir을 포함해야합니다 ./.

이를 수행하는 명령은 무엇입니까?

답변:


278

현재 디렉토리와 모든 서브 디렉토리에서 모든 테스트를 실행해야합니다.

$ go test ./...

주어진 특정 디렉토리에 대해 모든 테스트를 실행해야합니다.

$ go test ./tests/... ./unit-tests/... ./my-packages/...

가져 오기 경로가 앞에 붙은 모든 테스트를 실행해야합니다 foo/.

$ go test foo/...

모든 접두사 가져 오기 경로를 foo다음 과 같이 실행해야합니다 .

$ go test foo...

$ GOPATH에서 모든 테스트를 실행해야합니다.

$ go test ...

4
참고로 zsh을에 베어 ...마지막 예는, IE 이스케이프해야합니다go test \...
게이브 Kopley

내가 subdir에서 모든 테스트를 실행하려고 할 때 나는 얻는다go: warning: "subdir/..." matched no packages
Ivan Aracki

@ zzzz 특정 폴더에 대한 테스트를 실행하는 방법은 무엇입니까? "시험을
보러 가자

go test ./...정말 훌륭한 명령입니다!. 도움을 주셔서 감사합니다 :)
땅벌

53

이후 이동 1.9에서 사용

go test ./...

1.6에서 1.8 사이에는 ./...일치하는 vendor디렉토리도 있습니다. 공급 업체 패키지를 건너 뛰려면

go test $(go list ./... | grep -v /vendor/)

출처 : https://github.com/golang/go/issues/11659 , https://github.com/golang/go/issues/14417 , https://github.com/go-lang-plugin-org/ go-lang-idea-plugin / issues / 2366 , @nickgrim의 의견.


1
이 솔루션이보기 쉽기 때문에 Windows 사용자 (나는 아니지만 일부 팀 동료)가이를 실행하는 것이 훨씬 더 복잡해집니다. Makefile없이 각 플랫폼에서 기본으로 실행되는 Go의 아름다움은 훌륭합니다.
Konrad Kleine

5
가치는 것을 지적 1.9 이동의로 ./... 더 이상 일치하는 ./vendor/디렉토리를, 당신이 당신의 모든 테스트를 실행하지와 함께 공급 업체 - 시험 중 어느 것도 할 수 있습니다go test ./...
nickgrim

11

폴더 구조

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

go test 명령 명령

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

전체 프로젝트에 대한 범위 보고서

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.