Running tests

Kubebuilder will create scaffolding tests for controllers and resources. When run, these tests will starta local control plane as part of the integration test. Developers may talk to the local control planeusing the provided config.

Resource Tests

The resource tests are created under pkg/apis/<group>/<version>/<kind>_types_test.go. When a resourceis created with kubebuilder create api, a test file will be created to store and read back the object.

Update the test to include validation you add to your resource.

For more on Resources see What Is A Resource

Controller Tests

The controller tests are created under pkg/controller/<kind>/controller_test.go. When a resourceis created with kubebuilder create api, a test file will be created to start the controllerand reconcile objects. The default test will create a new object and verify that the controllerReconcile function is called.

Update the test to verify the business logic of your controller.

For more on Controllers see What Is A Controller

Run the tests

Run the tests using make test.

  1. make test

Optional: Change Control Plane Test Binaries

To override the test binaries used to start the control plane, set the TESTASSET environment variables.This can be useful for performing testing against multiple Kubernetes cluster versions.

If these environment variables are unset, kubebuiler will default to the binaries packaged with kubebuilder.

  1. export TEST_ASSET_KUBECTL=/usr/local/kubebuilder/bin/kubectl
  2. export TEST_ASSET_KUBE_APISERVER=/usr/local/kubebuilder/bin/kube-apiserver
  3. export TEST_ASSET_ETCD=/usr/local/kubebuilder/bin/etcd