为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中对命令行标志进行单元测试?

如何在 Go 中对命令行标志进行单元测试?

Go
梦里花落0921 2021-06-07 15:30:59
我想要一个单元测试来验证特定的命令行标志是否在枚举中。这是我想针对其编写测试的代码:var formatType stringconst (    text = "text"    json = "json"    hash = "hash")func init() {    const (        defaultFormat = "text"        formatUsage   = "desired output format"    )    flag.StringVar(&formatType, "format", defaultFormat, formatUsage)    flag.StringVar(&formatType, "f", defaultFormat, formatUsage+" (shorthand)")}func main() {    flag.Parse()}只有当 -format 等于上面给出的 const 值之一时,所需的测试才会通过。此值将在 formatType 中可用。一个正确的调用示例是: program -format text测试所需行为的最佳方法是什么?注意:也许我的措辞不好,但显示的代码不是单元测试本身,而是我想针对其编写单元测试的代码。这是我正在编写的工具中的一个简单示例,想询问是否有一种好方法来测试该工具的有效输入。
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

我不确定我们是否同意术语“单元测试”。在我看来,您想要实现的目标更像是程序中的一个非常正常的测试。你可能想做这样的事情:


func main() {

    flag.Parse()


    if formatType != text || formatType != json || formatType != hash {

        flag.Usage()

        return

    }


    // ...

}

有关定义自定义格式类型及其验证器的解决方案,请参阅 Internet。


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信