测试

如何运行测试

先决条件

  • 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)