Buộc kiểm tra lại hoặc tắt bộ nhớ đệm kiểm tra


106

Vấn đề:

Khi tôi chạy cùng một bài kiểm tra đi hai lần, lần chạy thứ hai vẫn chưa hoàn thành. Kết quả là những kết quả được lưu trong bộ nhớ cache từ lần chạy đầu tiên.

PASS    
ok      tester/apitests    (cached)

Liên kết

Tôi đã kiểm tra https://golang.org/cmd/go/#hdr-Testing_flags nhưng không có cờ cli cho mục đích đó.

Câu hỏi:

Có khả năng buộc đi kiểm tra luôn chạy kiểm tra và không lưu kết quả kiểm tra vào bộ nhớ cache.

Câu trả lời:


161

Có một số tùy chọn như được mô tả trong tài liệu cờ thử nghiệm :

  • go clean -testcache: hết hạn tất cả các kết quả kiểm tra
  • sử dụng cờ không thể lưu trong bộ nhớ cache khi chạy thử nghiệm của bạn. Cách thành ngữ là sử dụng-count=1

Điều đó nói rằng, những thay đổi trong mã hoặc mã kiểm tra của bạn sẽ làm mất hiệu lực của kết quả kiểm tra được lưu trong bộ nhớ cache (cũng có logic mở rộng khi sử dụng tệp cục bộ hoặc biến môi trường), vì vậy bạn không cần phải vô hiệu hóa bộ đệm kiểm tra theo cách thủ công.


4
Nó vẫn hữu ích trong trường hợp bạn đang thử nghiệm chống lại một phần phụ thuộc đang di chuyển, ví dụ như cơ sở dữ liệu nơi bạn thiết lập / loại bỏ phần phụ thuộc nhưng không phải mã của bạn. Có vẻ như OP đang thử nghiệm đối với một API không bị khai thác, đây là điều đã dẫn đến câu hỏi của họ.
joakim

có thể làm sạch bộ nhớ cache chỉ cho các thử nghiệm cụ thể không?
nickcamillo

3
Lưu ý rằng điều đó go clean -testcache ./...cũng hoạt động (ở đầu monorepo)
voutasaurus

Tôi cũng đã mở một vấn đề để cải thiện điều này: github.com/golang/go/issues/39056?ts=4
wesm

23

Trong Go11, tôi không thể tắt bộ nhớ cache bằng cách sử dụng GOCACHEcác mô-đun, -count=1thay vào đó tôi đã sử dụng :

go test -count=1

Trước Go11:

GOCACHE=off go test

Hoặc, làm sạch bộ nhớ cache thử nghiệm và chạy thử nghiệm lại:

go clean -testcache && go test 

19

Cũng có GOCACHE=offđề cập ở đây .


5
Đối với go 1.11và có tính năng mô-đun go khi sử dụng gây GOCACHE=offra lỗi go: cannot use modules with build cache disabled. Tốt hơn là sử dụng đề xuất -count 1.
zdebra

1
Bạn nói đúng, theo github.com/golang/go/issues/26809#issuecomment-410477084 GOCACHE sẽ bị loại bỏ từ từ trong 1.12, vì vậy sử dụng go test -count=1 ...là lựa chọn an toàn hơn bây giờ.
soltysh

build cache is disabled by GOCACHE=off, but required as of Go 1.12
Francesco Casula

7

Cách tôi đã sửa lỗi này (Tôi đang sử dụng Visual Studio Code trên macOS):

Mã> Tùy chọn> Cài đặt

Nhấp ...vào phía bên phải của trang cài đặt

Nhấp chuột Open settings.json

Hoặc:

  1. Thêm đoạn mã sau vào tệp settings.json của bạn

    "go.testEnvVars": {
        "GOCACHE": "off"
    }
    
  2. Thay đổi giá trị của go.testEnvVarsđể bao gồm những điều sau:"GOCACHE": "off"

4
Bộ nhớ cache xây dựng là bắt buộc kể từ Go 1.12, do đó cài đặt GOCACHEsẽ không hoạt động với các phiên bản Go gần đây. Một giải pháp cho VS Code là đặt "go.testFlags": ["-count=1"]trong cài đặt.
Armand Grillet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.