我正在开发一个有很多标志的命令行实用程序。一个典型的命令如下所示:
mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E
在大多数情况下,会打印“成功”消息,但我仍想根据外部数据库等其他来源进行验证,以确保实际成功。
我开始创建集成测试,但我不确定执行此操作的最佳方法。我主要担心的是:
- 有很多标志组合,我怎么知道要测试哪些组合?如果您对可以一起使用的 10 多个标志进行数学计算...
- 是否有必要测试标志的排列?
- 如何构建能够自动执行测试然后验证结果的框架。
- 如何跟踪大量标志并提供顺序,以便轻松判断哪些组合已实现,哪些未实现。
以类似单元测试的格式手动写出个别案例并验证结果的想法令人望而生畏。
有人知道可用于自动执行此类测试的模式吗?也许甚至是试图解决这个问题的软件?使用 GNU 命令行工具的人们如何测试他们的软件?
最佳答案
我认为这非常适合您的应用程序。
首先,您如何确定您的应用程序是否成功执行?是结果码吗?它是打印到控制台的东西吗?
对于问题 2,这取决于您如何在应用程序中解析这些标志。大多数时候,标志的顺序并不重要,但在某些情况下它很重要。我希望您不需要测试标志的排列,因为它会增加很多需要测试的情况。
在一般情况下,您应该分析每个标志的影响是什么。有可能一个标志不干扰其他标志,然后只需要测试一次。对于打算单独使用的标志(例如 --help 或 --version)也是如此。您还需要分析应该为每个标志测试哪些值。通常,你想尝试每一种可能的有效值,以及每一种可能的无效值。
我认为可以编写一个简单的 bash 脚本来执行测试,或者编写任何脚本语言,例如 Python。使用嵌套循环,您可以为每个标志尝试可能的值,包括对无效值的测试和未设置标志的情况。我将生成一个多维结果矩阵,应对其进行分析以查看结果是否符合预期。
关于testing - 是否存在用于测试命令行参数的既定标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827798/