【问题标题】:Integration tests who download files下载文件的集成测试
【发布时间】:2017-11-07 21:36:06
【问题描述】:

我正在开发一个网络应用程序,它会做一些工作,将数据打包到一个文件中并将该文件返回给您 (Content-Type: application/force-download)。现在我正在实施一些集成测试,在那里我要求提供数据,而网络应用程序会将文件返回给我。测试下载预期数据时,Web 应用程序行为正确。我阅读了this,发现它非常鼓舞人心,但是当您构建要下载的文件时,该响应是否有效?

【问题讨论】:

    标签: java maven-3 integration-testing maven-failsafe-plugin


    【解决方案1】:

    您可以采取多种方法。从最好到最坏的顺序(YMMV):

    从语义上检查输出。例如,如果是 JSON,请检查它是否可以解析,以及是否存在预期的键和值。如果是图像,请检查它是否可以解析并具有正确的格式。

    专业人士:您只是在测试您真正关心的内容。测试失败可能指向特定问题。

    缺点:需要更多的工作。

    直接逐字节比较文件。“黄金大师”方法。如果文件大于几行,或者它是二进制文件,我会将它放在磁盘上并让集成测试加载它。这也可以让您更轻松地在外部程序中查看/编辑它。

    专业人士:很容易看到预期文件的样子。

    Con:在不相关的变化的情况下可能会变脆。例如,JSON 对象中键的顺序应该无关紧要。更糟糕的是,如果您正在生成 PNG 图像,则创建时间可能会嵌入到文件中,因此您的测试每次都会失败。

    比较文件哈希。我认为这是最后的手段。

    专业人士:您不需要将整个文件存储在集成测试中,只有当它真的很大时才会这样做。

    Con:测试失败什么也不会告诉你。即使是集成测试中嵌入的哈希也不会告诉您任何信息。这只是一个“变化检测器”测试。

    【讨论】:

    • 你好,托马斯。当平台字符集编码更改时,您有什么建议逐字节比较文件吗?测试可以在 linux 上运行,但不能在 windows 上运行,我认为这是因为在 linux 机器上获得了预期的结果..
    • 无论平台如何,我都会对所有内容使用 UTF-8。您的两个平台中的哪个平台有误,您需要自己弄清楚...
    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2014-01-05
    • 2021-06-12
    相关资源
    最近更新 更多