Golang 테스트 커버리지를 효율적으로 확인

3601 단어 5도커Makefile

Golang 테스트 커버리지를 효율적으로 확인



이전 기사에서 테스트 커버리지를 쉘 스크립트로 만들고 그것을 실행하여 확인했습니다.
htps : // 이 m / k_ ゆだ / ms / 86f40bdf3 040560 4

이번 이를 Dockerfile과 Makefile에 정리해 보다 테스트 커버리지를 확인하기 쉽게 한 메모.

흐름


  • 멀티 스테이지 빌드의 stage1에서 테스트 커버리지를 확인하기위한 cover.out 등을 생성한다.
  • stage2에서 stage1의 파일 복사
  • Docker 컨테이너가없는 파일 인 cover.out을 HTML로 변환 한 파일을 로컬로 복사합니다.
  • 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을 작성하는 모범 사례를 추구하고 싶습니다.
  • 좋은 웹페이지 즐겨찾기