是否存在用于测试命令行参数的既定标准?

时间:2011-04-29 04:17:20

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

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

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

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

我开始创建集成测试,我不确定最好的方法。我主要担心的是:

  1. 有很多标志组合,我怎么知道要测试哪些组合?如果你对可以一起使用的10多个标志进行数学计算......
  2. 是否有必要测试标志的排列?
  3. 如何构建一个能够自动化测试然后验证结果的框架。
  4. 如何跟踪大量标志并提供订单,以便很容易分辨哪些组合已经实施,哪些组合没有。
  5. 手动写出个案并以单位测试格式验证结果的想法令人生畏。

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

2 个答案:

答案 0 :(得分:2)

我认为这对您的申请非常具体。

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

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

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

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

答案 1 :(得分:1)

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