작업 영역을 깔끔하게 유지하기 위해 패키지에 대한 테스트 및 예제를 하위 디렉터리로 사용하여 Go에서 패키지를 만들고 싶습니다. 이것이 가능하고 가능하다면 어떻게합니까?
모든 문서는 항상 다른 코드와 같은 위치에 테스트 코드를 배치합니다. 어떤면에서 더 나은가요 아니면 그냥 관례일까요?
작업 영역을 깔끔하게 유지하기 위해 패키지에 대한 테스트 및 예제를 하위 디렉터리로 사용하여 Go에서 패키지를 만들고 싶습니다. 이것이 가능하고 가능하다면 어떻게합니까?
모든 문서는 항상 다른 코드와 같은 위치에 테스트 코드를 배치합니다. 어떤면에서 더 나은가요 아니면 그냥 관례일까요?
답변:
"재귀 적으로" 실행할 수 있습니다 . 테스트 할 모든 패키지go test
를 나열 해야합니다 .
Go 프로젝트의 루트 폴더에있는 경우 다음을 입력합니다.
go test ./...
' ./...
'표기법은 " 명령 " 의 " 패키지 목록 설명 "섹션에 설명되어 있습니다 .go
가져 오기 경로는 하나 이상의 "
...
"와일드 카드를 포함하는 경우 패턴입니다 . 각 와일드 카드는 빈 문자열 및 슬래시를 포함하는 문자열을 포함하여 모든 문자열과 일치 할 수 있습니다.이러한 패턴
GOPATH
은 이름이 패턴과 일치하는 트리 에서 발견되는 모든 패키지 디렉토리로 확장됩니다 .특별한 경우 로 의 하위 디렉토리
x/...
와 일치 합니다. 예를 들어 는 하위 디렉토리로 확장 하고 패키지합니다.x
x
net/...
net
당신이 유지하는 경우 _test.go
하위 폴더에있는 파일의 ' go test ./...
'명령을 픽업 할 수있을 것입니다.
그러나:
즉, 여전히 _test.go
파일을 기본 소스 파일 바로 옆에 두는 것이 좋습니다 . 찾기가 더 쉽습니다.
file_test.go
"file"은 테스트 할 소스 코드 파일의 이름 인 파일 의 동일한 디렉토리에 코드와 함께 테스트를 배치합니다 . 이것은 관습이며 내 경험에서 최고라는 것을 알았습니다.
go test
도구가 충분히 자동화되지 않은 경우 GoConvey 테스트 (동작을 기반으로하며보다 자체 문서화되는 GoConvey 테스트)는 물론 기존 Go 테스트를 자동으로 업데이트하고 실행하는 웹 UI가있는 GoConvey를 살펴볼 수 있습니다. 전통적인 Go 테스트보다).
go test
하위 폴더에서도 작동 할 수 있습니다. 보기 내 대답은 아래
편집 됨
VonC의 답변을 바탕으로
이 답변은 go1.11
. 상위 go
버전에서는 아직 테스트되지 않았습니다 .
하위 폴더에 자신의 테스트를 유지하기 위해 좋아하는 분들을 위해, 말을 test
한 후 실행,
go test ./...
테스트를 포함하지 않는 폴더를 포함 하여 모든 폴더 에서 테스트를 실행하려고 시도 하므로 테스트 ?
가 아닌 폴더에 대한 후속 보고서에이 있습니다.
달리는
go test ./.../test
대신 test
폴더 만 대상으로 하므로 테스트 폴더에만 초점을 맞춘 깨끗한 보고서가 있습니다.
주의
테스트 하위 폴더를 사용하면 커버리지 보고서 계산을 방지 할 수 있습니다. go의 철학은 패키지 폴더에 테스트 파일을 남겨 두는 것입니다.
go test ./.../test
반환 go: warning: "./.../test" matched no packages
// 테스트 폴더를 대상 않습니다뿐만 아닙니다. go version go1.13 darwin / amd64
나는 일반적으로 테스트하지 않지만 파일을 디렉토리로 그룹화하고 다음과 같은 가져 오기를 사용할 수 있습니다.
import "./models"
한 레벨 아웃
import "../models
이면 한 레벨 아웃이고 한 레벨 인 경우
예를 들면 다음과 같습니다.
./models/todo.go
./test/todo_test.go
시험 todo.go
에서 todo_test.go
의 귀하의 수입이 todo_test.go
될 것입니다
import "../models"
go test ./...
현재 폴더 와 모든 하위 폴더에서 테스트를 실행합니다 . 보기 내 대답은 아래