构建与测试主机管理及端口扫描应用
1. 测试主机管理子命令
在开发应用时,使用 Cobra 生成的样板代码虽然能提升开发速度,但会在一定程度上增加编写测试的难度,因为会受到生成器选择的限制。为了克服这一限制,同时利用生成的代码,我们采用了如 listAction
和 deleteAction
这样的动作函数。这些函数独立于生成的代码,便于进行测试。
1.1 准备测试文件
首先,在应用的 cmd
目录下创建并编辑 cmd/actions_test.go
文件,定义包和导入所需的包:
package cmd
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
"testing"
"pragprog.com/rggo/cobra/pScan/scan"
)
1.2 创建测试环境辅助函数
由于应用会将主机列表保存到文件中,测试需要临时文件。创建一个辅助函数 setup
来设置测试环境:
func setup(t *testing.T, hosts []string, initList bool) (string, func()) {
// Create temp file
tf, err :