상위 디렉터리에서 여러 모듈 테스트
상위 디렉터리에서 여러 Go 모듈로 작업할 때 전체에서 테스트를 실행하는 것이 어려울 수 있습니다. 그들 모두. 아래와 같은 디렉터리 구조를 고려해보세요.
/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go
문제:
go test./..를 사용하여 상위 디렉터리 아래의 모든 모듈에 대해 테스트를 실행하려고 합니다. . 오류가 발생합니다:
go: warning: "./..." matched no packages no packages to test
해결 방법:
go test 명령은 현재 디렉터리 또는 상위 디렉터리에 루트가 있는 단일 모듈에서 작동하도록 설계되었습니다. 중첩된 모듈 테스트는 지원하지 않습니다.
이 문제를 해결하려면 셸 트릭을 사용해야 합니다. 한 가지 접근 방식은 Cerise Limón의 의견에서 제안한 대로 find 및 xargs 명령을 조합하여 사용하는 것입니다. 프로젝트에서는 이 프로세스를 자동화하기 위해 Makefile 또는 test.sh 스크립트를 생성하는 경우가 많습니다.
수많은 모듈이 포함된 대규모 프로젝트의 경우 보다 체계적인 접근 방식은 모든 모듈 목록을 유지하는 것입니다(Google의 go-cloud 프로젝트에서처럼). . 그런 다음 프로젝트는 모듈 목록을 반복하고 각 디렉터리에 대해 테스트 실행과 같은 작업을 수행하는 스크립트를 사용합니다.
예:
다음 test.sh 스크립트는 이를 보여줍니다. 접근 방식:
<code class="sh">#!/bin/bash for module in $(cat allmodules); do cd $module go test cd .. done</code>
참고:
모듈을 나열하는 데 별도의 파일이 필요하지 않을 수 있지만 go-cloud 프로젝트의 구현은 얼마나 큰지에 대한 예를 제공합니다. 프로젝트는 다중 모듈 테스트를 관리합니다.
위 내용은 상위 디렉토리에서 여러 Go 모듈을 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!