使用 Go test 執行您的測試
目錄
先決條件
完成本指南中的 構建您的 Go 映象 部分。
概述
測試是現代軟體開發中必不可少的一部分。測試對不同的開發團隊來說可能意味著很多事情。有單元測試、整合測試和端到端測試。在本指南中,您將瞭解在構建時在 Docker 中執行您的單元測試。
在本節中,將使用您在 構建您的 Go 映象 中克隆的 docker-gs-ping
專案。
構建時執行測試
要在構建時執行測試,您需要在 Dockerfile.multistage
中新增一個測試階段。樣本應用程式儲存庫中的 Dockerfile.multistage
已經包含以下內容
# syntax=docker/dockerfile:1
# Build the application from source
FROM golang:1.19 AS build-stage
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY *.go ./
RUN CGO_ENABLED=0 GOOS=linux go build -o /docker-gs-ping
# Run the tests in the container
FROM build-stage AS run-test-stage
RUN go test -v ./...
# Deploy the application binary into a lean image
FROM gcr.io/distroless/base-debian11 AS build-release-stage
WORKDIR /
COPY --from=build-stage /docker-gs-ping /docker-gs-ping
EXPOSE 8080
USER nonroot:nonroot
ENTRYPOINT ["/docker-gs-ping"]
執行以下命令以使用 run-test-stage
階段作為目標構建映象並檢視測試結果。包括 --progress plain
以檢視構建輸出,--no-cache
以確保始終執行測試,以及 --target run-test-stage
以將目標設為測試階段。
$ docker build -f Dockerfile.multistage -t docker-gs-ping-test --progress plain --no-cache --target run-test-stage .
您應該看到包含以下內容的輸出。
#13 [run-test-stage 1/1] RUN go test -v ./...
#13 4.915 === RUN TestIntMinBasic
#13 4.915 --- PASS: TestIntMinBasic (0.00s)
#13 4.915 === RUN TestIntMinTableDriven
#13 4.915 === RUN TestIntMinTableDriven/0,1
#13 4.915 === RUN TestIntMinTableDriven/1,0
#13 4.915 === RUN TestIntMinTableDriven/2,-2
#13 4.915 === RUN TestIntMinTableDriven/0,-1
#13 4.915 === RUN TestIntMinTableDriven/-1,0
#13 4.915 --- PASS: TestIntMinTableDriven (0.00s)
#13 4.915 --- PASS: TestIntMinTableDriven/0,1 (0.00s)
#13 4.915 --- PASS: TestIntMinTableDriven/1,0 (0.00s)
#13 4.915 --- PASS: TestIntMinTableDriven/2,-2 (0.00s)
#13 4.915 --- PASS: TestIntMinTableDriven/0,-1 (0.00s)
#13 4.915 --- PASS: TestIntMinTableDriven/-1,0 (0.00s)
#13 4.915 PASS
要詳細瞭解構建和執行測試,請參閱 使用 Docker 構建指南。
下一步
在本節中,您瞭解瞭如何在構建映象時執行測試。接下來,您將學習如何使用 GitHub Actions 設定 CI/CD 管道。