Go语言开发CLI工具的测试与功能扩展

1、编写测试以确保新功能按预期工作。

在运行测试前,若存在之前测试遗留的 .todo.json 文件,需将其删除,命令为:

$ rm .todo.json

随后运行测试以确保工具按预期工作,命令为:

$ go test -v

之后可尝试改进后的工具,示例命令如下:

$ go run main.go -list
$ go run main.go -task "One ToDo item"
$ go run main.go -task "Another ToDo item"
$ go run main.go -list
$ go run main.go -complete 1
$ go run main.go -list

对于Markdown预览工具,可对每个函数编写单独的单元测试,并使用集成测试来测试 run 函数。

对于需要文件的函数测试,可使用如 黄金文件 等技术。

对于初始CLI实现的测试,可利用Go的 os/exec 包编写集成测试,通过 TestMain 函数进行额外的设置和清理工作。

2、实现 -del 标志以从列表中删除一个项目。使用 API 中的 Delete 方法来执行此操作。

interacting/todo/todo.go 文件中已定义了 Delete 方法用于从列表中删除 ToDo 项目:

func (l *List) Delete(i int) error {
    ls := *l
    if i <= 0 || i > len(ls) {
        return fmt.Errorf("Item %d does not exist", i)
    }
    *l = append(ls[:i-1], ls[i:]...)
    return nil
}

apis/todoClient.v3/cmd/del.go 文件中更新了 delCmd 命令,并定义了 delAction 函数来执行删除操作,通过将字符串参数转换为整数,调用 deleteItem 函数进行 REST API 调用以删除项目,并使用 printDel 函数打印结果。

3、添加另一个标志以启用详细输出,显示日期/时间等信息。

要添加一个标志以启用详细输出,显示日期/时间等信息,可按以下步骤操作:

  1. 确保已导入 flag 包。
  2. main 函数中定义一个新的布尔标志,用于启用详细输出。
  3. 调用 flag.Parse() 解析命令行标志。
  4. 根据标志的值决定是否输出详细信息。

示例代码如下:

import (
    "flag"
    "fmt"
    "time"
)

func main() {
    verbose := flag.Bool("verbose", false, "Enable verbose output with date/time")
    flag.Parse()
    if *verbose {
        now := time.Now()
        fmt.Printf("Verbose output enabled. Current date/time: %s\n", now.Format("2006-01-02 15:04:05"))
    }
    // 其他代码
}

在上述代码中,定义了一个名为 verbose 的布尔标志,默认值为 false 。如果用户在命令行中使用 -verbose 选项, *verbose 将为 true ,程序将输出当前的日期和时间。

4、添加另一个标志以防止显示已完成的项目。

可以在 main 函数中添加一个新的布尔类型标志来实现此功能。示例代码如下:

interacting/todo.v1/cmd/todo/main.go 文件的 main 函数里,添加:

hideCompleted := flag.Bool("hide-completed", false, "Prevent displaying completed items")

然后调用:

flag.Parse()

解析标志。后续在代码中根据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值