Merge pull request #4862 from brianpursley/kubernetes-90763

Update Testing Guide to clarify how to use go test as an alternative to make test
This commit is contained in:
Kubernetes Prow Robot 2020-06-16 13:26:05 -07:00 committed by GitHub
commit 4ae5e6fafd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 29 deletions

View File

@ -48,17 +48,6 @@ passing, so it is often a good idea to make sure the e2e tests work as well.
cd kubernetes
make test # Run all unit tests.
```
If you have `GOPATH` set up correctly, you can
also just use `go test` directly.
```sh
cd kubernetes
go test ./... # Run all unit tests
```
The remainder of this documentation presumes that you use `Make` as an
entry point, but remember that the ability to use `go test` exists should you
desire.
If any unit test fails with a timeout panic (see [#1594](https://github.com/kubernetes/community/issues/1594)) on the testing package, you can increase the `KUBE_TIMEOUT` value as shown below.
@ -80,12 +69,6 @@ added automatically to these:
make test WHAT=./pkg/kubelet # run tests for pkg/kubelet
```
Expressed strictly with `go test`, the above command is equivalent to the following:
```sh
go test ./pkg/kubelet
```
To run tests for a package and all of its subpackages, you need to append `...`
to the package path:
@ -119,12 +102,6 @@ make test WHAT=./pkg/apis/core/validation GOFLAGS="-v" KUBE_TEST_ARGS='-run ^Tes
make test WHAT=./pkg/apis/core/validation GOFLAGS="-v" KUBE_TEST_ARGS="-run ValidatePod\|ValidateConfigMap$"
```
Or if we are using `go test` as our entry point, we could run:
```sh
go test ./pkg/apis/core/validation -v -run ^TestValidatePods$
```
For other supported test flags, see the [golang
documentation](https://golang.org/cmd/go/#hdr-Testing_flags).
@ -171,12 +148,6 @@ To run benchmark tests, you'll typically use something like:
make test WHAT=./pkg/scheduler/internal/cache KUBE_TEST_ARGS='-benchmem -run=XXX -bench=BenchmarkExpirePods'
```
Alternatively, to express in pure Go, you could write the following:
```sh
go test ./pkg/scheduler/internal/cache -benchmem -run=XXX -bench=Benchmark
```
This will do the following:
1. `-run=XXX` is a regular expression filter on the name of test cases to run.
@ -189,6 +160,36 @@ This will do the following:
See `go help test` and `go help testflag` for additional info.
### Run unit tests using go test
You can optionally use `go test` to run unit tests. For example:
```sh
cd kubernetes
# Run unit tests in the kubelet package
go test ./pkg/kubelet
# Run all unit tests found within ./pkg/api and its subdirectories
go test ./pkg/api/...
# Run a specific unit test within a package
go test ./pkg/apis/core/validation -v -run ^TestValidatePods$
# Run benchmark tests
go test ./pkg/scheduler/internal/cache -benchmem -run=XXX -bench=Benchmark
```
When running tests contained within a staging module,
you first need to change to the staging module's subdirectory and then run the tests, like this:
```sh
cd kubernetes/staging/src/k8s.io/kubectl
# Run all unit tests within the kubectl staging module
go test ./...
```
## Integration tests
Please refer to [Integration Testing in Kubernetes](integration-tests.md).