>백엔드 개발 >Golang >여러 Go 모듈이 있는 상위 디렉터리에서 `go 테스트`를 실행하는 방법은 무엇입니까?

여러 Go 모듈이 있는 상위 디렉터리에서 `go 테스트`를 실행하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 21:51:30946검색

How to Run `go test` in a Parent Directory with Multiple Go Modules?

여러 Go 모듈의 상위 디렉터리에서 go 테스트 실행

다음과 같이 여러 Go 모듈이 포함된 디렉터리 구조로 작업하는 경우:

<code class="pre">/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go</code>

go 테스트를 실행 중입니다. 또는 루트 디렉터리(/root)에서 test ./...로 이동하면 패키지를 찾을 수 없다는 오류가 발생할 수 있습니다. 이는 go 테스트가 단일 모듈에서 작동할 것으로 예상하기 때문입니다.

이러한 한계를 극복하기 위한 한 가지 접근 방식은 쉘 트릭을 사용하는 것입니다. 예를 들어, 다음 명령은 하위 디렉터리를 반복하고 각 디렉터리에서 go test ./...를 실행해야 합니다.

<code class="pre">find . -type d -name main_test.go -exec go test '{}/' \;</code>

또는 많은 프로젝트에서 이 작업을 수행하는 Makefile 또는 테스트 스크립트를 구현합니다. 예를 들어 test.sh 스크립트에는 다음이 포함될 수 있습니다.

<code class="pre">for i in $(find . -type d -name main_test.go | sed 's|main_test.go||'); do
    cd $i
    go test ./...
    cd ..
done</code>

이 스크립트는 저장소를 반복하고, main_test.go 파일이 포함된 각 하위 디렉터리로 변경하고, go test ./...를 실행한 다음 반환합니다. 상위 디렉터리로 이동합니다.

go-cloud 프로젝트(https://github.com/google/go-cloud/blob/)에서 유지 관리하는 것과 같은 대규모 프로젝트에서는 모든 모듈 목록을 유지 관리할 수 있습니다. 마스터/모든 모듈). 이 목록은 스크립트에서 모듈을 반복하고 테스트 실행을 포함한 다양한 작업을 수행하는 데 사용될 수 있습니다.

위 내용은 여러 Go 모듈이 있는 상위 디렉터리에서 `go 테스트`를 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.