如何测试命令行参数处理

How to test command line arguments processing

我有一个接收命令行参数的程序(在我的例子中,它是一个使用 Argot 的 Scala 程序)。一个简化的用例类似于:

sbt "run -n 300 -n 50"

假设应用程序应该只接受(并打印)0100 之间的数字,这意味着它应该丢弃 300 并只打印 50

测试它的最佳方法是什么?单元测试是否适用?与其处理 main 中的参数,也许我应该重构一个函数并测试该函数?

如果您想测试向您的程序传递参数的行为,那么您将需要执行黑盒 integration/system 测试(而非单元测试):

Black-box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. See this.

否则,按照 Chris 所说的,分解出代码来测试底层逻辑,而不测试接收参数的行为。