に表示されるものを指定するOperator-sdkを使用してプロジェクトを作業している間、テストカバレッジが非常に低いことがわかりました。 その理由は、Operator-sdkのためにレポ内に多くのdeepcopyファイルが生成されたためです。

最初に私は読みやすさのために私のテストに色を追加するために、次のレポを使用しています

go get -u github.com/rakyll/gotest

カラーテスト
次のコマンドでテストしたpkgディレクトリをテストします

gotest -v -covermode=count -coverprofile=coverage.out ./pkg/...

これにより、テストが実行され、テストカバレッジがファイルカバレッジに出力されます。out htmlフラグを使用してカバレッジをローカルで確認できます

go tool cover -html=coverage.out


または、cliで関数のパーセンテージカバレッジを与えるfuncフラグを使用することもできます

go tool cover -func=coverage.out

カバレッジを絞り込む

生成されたファイルをテストするつもりはなかったので、コードカバレッジレポートからそれらを削除できるかどうかを確認 最初は、次の形式でgo test-runフラグを見ました。

gotest ./packagedirectory -run=testname

私はそれが更新するにはあまりにも多くのメンテナンスを持ってい 私は正規表現でそれを使ってすべてのテストを試してみましたが、-run=^Test.+ような貪欲な正規表現では、すべてのテストだけでなくすべてのファイルもヒット

次のディレクトリとして、pkg/apisが生成されたdeepcopyファイルが置かれていました。 テストしていたファイルをpkg/apisからtypesというサブパッケージに移動し、代わりにディレクトリでテストをフィルタリングしました。 だから私のテストコマンドは次のように見えました

gotest -v -covermode=count -coverprofile=coverage.out ./pkg/controller/... ./pkg/providers/... ./pkg/resources/... ./pkg/apis/integreatly/v1alpha1/types/...

これにより、上記のディレクトリ内のテストが実行され、カバレッジが更新されます。このディレクトリ内のファイルのみを出力します。 これにより、私の全体的なカバレッジが約14%増加しました

CI/CDとカバーオール

CI/CDにTravisを使用し、カバーオールを.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

-repotoken=$COVERALLS_TOKEN
の設定の詳細については、goveralls repohttps://github.com/mattn/goverallsとhttps://docs.coveralls.io/go

を参照してくださいこの設定では、PRの一部としてカバレッジをチェックすることができます。

マイブログ

コメントを残す

メールアドレスが公開されることはありません。