【问题标题】:How can I test a cross-platform command-line client?如何测试跨平台命令行客户端?
【发布时间】:2014-02-20 16:54:47
【问题描述】:

我想在多平台支持的命令行程序上执行集成测试。

例如,如果我正在编写一个mercurial 插件并想从顶层测试它,我如何创建一个可以在 Windows、Linux 和 OS X 上运行的测试套件?

或者,我是否应该只编写使用代码中最高级别函数的测试并对最终程序执行基本的健全性检查?

【问题讨论】:

    标签: batch-file mercurial automated-tests integration-testing test-suite


    【解决方案1】:

    我们用 Groovy 或 Python 编写类似的测试。由于 Python 和 Groovy 运行时在很大程度上独立于平台,您应该能够在所有三个操作系统上执行命令。每个平台可能需要更改一些参数,但您可以进行操作系统检查并在脚本开始时设置这些参数。有一些框架可以简化测试的运行,例如用于 Groovy 的 JUnit 和 Spock 以及用于 Python 的 Robot,但它们只是抽象了普通框架。我会从简单的开始。尝试可能可行的最简单的事情是敏捷的。

    关于你的第二个问题,我可能会同时做这两个问题。首先,我会开始为所有内容编写测试。然后,如果运行所有测试变得昂贵(假设超过几分钟。我会将它们分成烟雾(理智)和功能(一切)测试,并减少运行功能测试的频率。

    【讨论】:

    • 谢谢!使用脚本语言和 exec 是有意义的。是否有任何测试框架设计用于生成进程并以这种方式测试它们,还是只使用在 python 和 groovy 社区中已经流行的框架?
    【解决方案2】:

    Mercurial 自己的测试套件是跨平台的,并且已经测试了许多 Mercurial 扩展。也许,只需添加更多测试。

    【讨论】:

    • 感谢您的建议。 Mercurial 使用cram 测试框架,该框架可在链接中独立获得。此外,mercurial 的 Windows test plan 表明它不是完全跨平台的,但大多数测试都有效。
    • 是的,我认为唯一不运行的测试是文件系统特定的技巧,比如在 Windows 上并不真正存在的符号链接和硬链接,如果在 Windows 上使用它们会出现问题网络驱动器等
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多