Golang 테스트 커버리지를 효율적으로 확인
Golang 테스트 커버리지를 효율적으로 확인
이전 기사에서 테스트 커버리지를 쉘 스크립트로 만들고 그것을 실행하여 확인했습니다.
htps : // 이 m / k_ ゆだ / ms / 86f40bdf3 040560 4
이번 이를 Dockerfile과 Makefile에 정리해 보다 테스트 커버리지를 확인하기 쉽게 한 메모.
흐름
멀티스테이지 빌드를 실현하고 있는 Dockerfile을 재기록한다.
Dockerfile
FROM golang:latest AS stage1-buildphase
WORKDIR /go/src
COPY . .
RUN go test main_test.go main.go -v
RUN go build -o tail main.go
RUN go test main_test.go main.go -coverprofile=cover.out
RUN go tool cover -html=cover.out -o convert.html
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root
COPY --from=stage1-buildphase /go/src/ .
CMD ["./start.sh"]
여기에서 생성된 convert.html은 그래픽으로 테스트 커버리지를 확인할 수 있습니다.
Makefile로 각종 명령을 정리 Makefile NAME := gotail NAME-C := gotailcheck DATE := $(shell date +"%Y%m%d%I%M%S") .PHONY: all all: docker-build docker-run .PHONY: test test: go test main_test.go main.go -v .PHONY: docker-build docker-build: docker build -t $ (NAME) . .PHONY: docker-run docker-run: docker run --rm $(NAME) check: docker-build docker-run-covercheck open clean docker-run-covercheck: docker run --rm --name $(NAME-C) -itd $(NAME) /bin/sh docker cp $(NAME-C):/root/convert.html $(shell pwd) docker stop $(NAME-C) cp convert.html $(shell pwd)/coverchecklog/$(DATE).html .PHONY: open open: open $(shell pwd)/coverchecklog/$(DATE).html .PHONY: clean clean: rm -f cover.out convert.html 이렇게 작성하면 /coverchecklog에 테스트 커버리지를 확인할 수 있는 html 파일을 저장하고 자동으로 브라우저를 시작하여 확인할 수 있습니다. docker-run-covercheck: docker run --rm --name $(NAME-C) -itd $(NAME) /bin/sh docker cp $(NAME-C):/root/convert.html $(shell pwd) docker stop $(NAME-C) cp convert.html $(shell pwd)/coverchecklog/$(DATE).html docker run --rm 으로 docker 이미지를 처리가 끝난 후 자동으로 삭제해 줍니다. 또한 --name 옵션을 사용하여 ID가 아닌 name에서 docker cp를 실행할 수 있습니다. docker cp가 끝나면 이미지를 중지합니다. 마지막으로 현재 시간을 파일 이름으로 coverchecklog로 변환된 html을 기록합니다. cp convert.html $(shell pwd)/coverchecklog/$(shell date +"%Y%m%d%I%M%S").html $(DATE) 의 내용을 표기하고 있다. 모든 설정이 끝나면, 다음의 커멘드로 테스트 커버리지를 즉시 확인할 수 있어 기록도 남겨 줍니다. make check 이것으로 테스트 커버리지를 의식한 개발을 간편하게 실시할 수 있을 것 같습니다. 마지막으로 이번은 docker cp의 사용법에 막혀 있었습니다, docker 커멘드는 상당히 기억하는 것이 많기 때문에 가끔 혼란해 버립니다만, Makefile에 정리해 두면 안심입니다. 아직 golang은 방금 시작했지만 모르겠지만, golang에서 Makefile을 작성하는 모범 사례를 추구하고 싶습니다.
Reference
이 문제에 관하여(Golang 테스트 커버리지를 효율적으로 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k_yuda/items/181f997a7ff029229d36텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)