测试

如何运行测试

先决条件

  • Go 分发版
  • 如果您使用 Linux,则需要安装 libvirt-dev,因为单元测试需要 kvm2 驱动
# For Debian based
sudo apt-get install libvirt-dev

# For Centos
yum install libvirt-devel

# For Fedora
dnf install libvirt-devel

单元测试

单元测试在代码合并前在 Travis 上运行。若要在开发周期中运行

make test

集成测试

基础知识

在 minikube 根目录下,构建二进制文件并运行测试

make integration

您可能会发现设置各种选项来针对非默认驱动程序测试特定测试很有用。例如

 env TEST_ARGS="-minikube-start-args=--driver=hyperkit -test.run TestStartStop" make integration

快速迭代单个测试

在活动集群上运行单个测试

make integration -e TEST_ARGS="-test.run TestFunctional/parallel/MountCmd --profile=minikube --cleanup=false"

警告:为了使其能够重复工作,测试必须编写成能自行清理。

--cleanup=false 测试参数确保集群在测试运行后不会被删除。

有关详细信息,请参阅main_test.go

禁用并行

make integration -e TEST_ARGS="-test.parallel=1"

测试理念

  • 测试应足够简单,可通过检查来验证其正确性
  • 读者只需阅读测试主体即可理解测试
  • 从上到下的可读性比代码去重更重要

测试通常会带着很大的怀疑态度来阅读,因为它们很可能只在出现问题时才会被阅读。

一致性测试

这些是 Kubernetes 测试,它们针对任意集群运行并演练各种 Kubernetes 功能。您可以通过以下步骤针对 minikube 运行这些测试

安装 docker 安装 kubectl 克隆 minikube 仓库

编译最新的 minikube 二进制文件

% cd <minikube dir>
% make

触发测试并获取结果

% cd <minikube dir>
./hack/conformance_tests.sh out/minikube --driver=docker --container-runtime=docker --kubernetes-version=stable

此脚本将针对具有两个节点和提供参数的 minikube 集群运行最新版本的 sonobuoy。


最后修改于 2024 年 5 月 21 日:修正了一个小错别字。(3f13892f1)