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

värikokeet
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

Vastaa

Sähköpostiosoitettasi ei julkaista.