työskennellessäni projektissa Operator-sdk: lla huomasin, että testipeitto oli melko alhainen. Syynä oli, että paljon syntyy deepcopy tiedostoja repo johtuu operaattori-sdk.
ensin käytän seuraavaa Repoa lisätäkseni värejä luettavuustesteihini
go get -u github.com/rakyll/gotest
I testaan testaamani Pkg-hakemiston follow-komennolla
gotest -v -covermode=count -coverprofile=coverage.out ./pkg/...
tämä suorittaa testin ja tuottaa testin kattavuus tiedoston kattavuus.voit tarkistaa kattavuuden paikallisesti html-lipulla
go tool cover -html=coverage.out
tai voit käyttää func-lippua, joka antaa sinulle funktioiden prosentuaalisen kattavuuden cli: ssä
go tool cover -func=coverage.out
tarkennus kattavuus
koska en koskaan aio testata luotu tiedostoja päätin nähdä, jos voisin poistaa ne meidän koodi kattavuus raportti. Aluksi katsoin go-koeajolippua seuraavassa muodossa.
gotest ./packagedirectory -run=testname
huomasin, että siinä olisi liikaa huoltoa päivitettäväksi. Yritin käyttää sitä regex yrittää lyödä kaikki testi, mutta totesi, että ahne regex lauseke, kuten -run=^Test.+
olisin osuma kaikki testi mutta myös kaikki tiedostot niin olin takaisin mistä aloitin.
kuten seuraavassa hakemistossa Pkg/API oli missä luodut deepcopy-tiedostot sijaitsivat. Siirsin testaamani tiedostot Pkg/API: sta alipakettiin nimeltä types ja suodatinkokeet hakemiston mukaan sen sijaan. Koekäskyni näytti
gotest -v -covermode=count -coverprofile=coverage.out ./pkg/controller/... ./pkg/providers/... ./pkg/resources/... ./pkg/apis/integreatly/v1alpha1/types/...
tämä suorittaa testit yllä luetelluissa hakemistoissa ja päivittää kattavuuden.ulos vain tiedostot tässä kansiossa. Tämä lisäsi yleistä kattavuuttani noin 14%
CI / CD ja haalarit
käytimme Travisia CI / CD – ja setup-haalareihin, joissa oli seuraava config .travis.yml
.
language: gosudo: requireddist: bionicgo: - 1.13.xenv: - GO111MODULE=onaddons: apt: update: true packages: - "python3" - "python3-pip" - "python3-setuptools"git: depth: 1stages: - name: test - name: push if: fork = false - name: manifest if: fork = false AND tag IS presentbefore_install: - go get github.com/mattn/goverallsjobs: include: - stage: test script: - go get github.com/mattn/goveralls - go get -u github.com/rakyll/gotest - gotest -v -covermode=count -coverprofile=coverage.out ./pkg/controller/... ./pkg/providers/... ./pkg/resources/... ./pkg/apis/integreatly/v1alpha1/types/... - $GOPATH/bin/goveralls -coverprofile=coverage.out -service=travis-ci -repotoken=$COVERALLS_TOKEN
lisätietoja asetuksista -repotoken=$COVERALLS_TOKEN
katso ohjeet Repo https://github.com/mattn/goveralls ja https://docs.coveralls.io/go
tällä asetuksella voimme tarkistaa kuuluvuutemme osana PR: ää , tämä ei korvaa kirjoitustestejä, mutta poistaa luodut tiedostot kattavuusraportista.
Myblog