我写了一个命令行工具,我想测试(我不想从命令行运行单元测试)。我想将一组特定的输入选项映射到特定的输出。我一直无法找到任何现有的工具。该应用程序只是一个二进制文件,可以用任何语言编写,但它接受POSIX选项并写入标准输出。如何单元测试命令行界面
沿东西线:
- 对于每个组已知的输入选项:规定输入
- 启动应用程序。
- 将输出输出到文件。
- 将差分输出存储到所需的输出。
- 如果diff不为空,则记录错误。
(顺便说一句,这就是你所谓的集成测试而非单元测试?)
编辑:我知道我会怎么去写我自己的工具为此,我不需要代码的帮助。我想了解的是,如果这已经完成。
如果你决定要实现它,就没有必要*输出到文件*。您可以重定向输出并使用字符串代替。这样会更快,并且您将避免在单元测试中使用更多文件(完全没有建议)。 –
不知道任何工具,但有几个建议a)使用数据驱动的测试来测试输入到您的命令行的变化组合b)添加一个步骤来检查您的工具的返回码,以便您不要依赖输出流数据 – allen
@OscarMederos也许你不建议使用文件,但我总是这样做。除非测试输出可预测的很小,否则与通过基于缓存的现代文件系统访问的磁盘驻留文件相比,内存中的字符串是一个坏主意。 –