【问题标题】:Does there exist an established standard for testing command line arguments?是否存在用于测试命令行参数的既定标准?
【发布时间】:2011-04-29 04:17:19
【问题描述】:

我正在开发一个有很多标志的命令行实用程序。一个典型的命令如下所示:

mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E

在大多数情况下,会打印一条“成功”消息,但我仍想根据其他来源(如外部数据库)进行验证,以确保实际成功。

我开始创建集成测试,但我不确定执行此操作的最佳方法。我主要担心的是:

  1. 标志组合很多,我怎么知道要测试哪些组合?如果您对可以一起使用的 10 多个标志进行数学计算...
  2. 是否有必要测试标志的排列?
  3. 如何构建能够自动执行测试并验证结果的框架。
  4. 如何跟踪大量标志并提供顺序,以便轻松判断哪些组合已实施,哪些未实施。

手动编写单个案例并以类似单元测试的格式验证结果的想法令人生畏。

有谁知道可用于自动化此类测试的模式?也许甚至是试图解决这个问题的软件?使用 GNU 命令行工具的人如何测试他们的软件?

【问题讨论】:

    标签: testing command-line automated-tests integration-testing command-line-arguments


    【解决方案1】:

    我认为这非常适合您的应用程序。

    首先,您如何确定您的应用程序执行成功?是结果代码吗?它是打印到控制台的吗?

    对于问题 2,这取决于您如何在应用程序中解析这些标志。大多数时候,标志的顺序并不重要,但在某些情况下它很重要。我希望你不需要测试标志的排列,因为它会增加很多需要测试的案例。

    在一般情况下,您应该分析每个标志的影响。一个标志可能不会干扰其他标志,然后只需要测试一次。这也适用于单独使用的标志(例如--help 或--version)。您还需要分析应该为每个标志测试哪些值。通常,您想尝试每种可能的有效值,以及每种可能的无效值。

    我认为可以编写一个简单的 bash 脚本来执行测试,或者任何脚本语言,如 Python。使用嵌套循环,您可以为每个标志尝试可能的值,包括测试无效值和未设置标志的情况。我将生成一个多维结果矩阵,应该对其进行分析以查看结果是否符合预期。

    【讨论】:

    • 感谢您的反馈。在大多数情况下,命令会产生“成功”消息,但是,命令外部的实体会被操纵。所以我确实需要做一些额外的验证工作(比如查询数据库)。我将尝试使用嵌套循环的想法,但是,似乎很难以这种方式组织测试。
    【解决方案2】:

    当我(使用脚本语言)编写应用程序时,我有一个解析命令行字符串的函数。我获取我正在开发的文件并直接对该功能进行单元测试,而不是涉及 shell。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 2016-04-15
      • 2012-02-15
      • 2012-02-18
      • 2020-01-17
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多