【问题标题】:C# .NET Core - Where to store LARGE files for integration testing?C# .NET Core - 在哪里存储 LARGE 文件以进行集成测试?
【发布时间】:2021-08-01 04:09:17
【问题描述】:

我正在编写一些 .NET 核心 API 集成测试来验证文件上传机制是否正常工作。

存储我为测试目的上传的大文件 (2Gb +) 的最佳做法是什么?由于它们的大小,将这些测试文件包含在解决方案/源代码控制中似乎不是一个好主意。

在使用大文件编写集成测试时,推荐的路径是什么?

【问题讨论】:

  • 您是否需要测试该方法是否接受这么大的文件?或者该方法使用从文件中读取的数据执行的逻辑?如果是第二个,我会尝试模拟从文件中读取的数据,而不是上传包含数据的文件。
  • 这是第一个。这是为了验证我们在上传一定大小的文件时没有收到任何 IIS 错误,所以我真的需要实际尝试上传一个真实的文件。另外,我目前的方法是在测试执行期间在磁盘上生成一个大的虚拟文件,尝试上传它,然后在拆卸时删除该文件。我不知道这是否是最好的方法,但这是我目前正在做的。
  • 您不能在需要时使用一小段代码生成一个大文件吗?
  • 是的,我可以,这就是我提到的我目前正在做的事情,但不确定这是否是最好的方法。

标签: .net-core integration-testing web-api-testing


【解决方案1】:

我看到两个选项

#1 如果文件的内容不重要,我会动态生成大小为 xGB 的流(例如序列化数组,其中包含对同一复杂结构的数百万个引用)。尝试在控制台应用程序中创建适当的文件并保存在本地,看看它是否符合您的期望。

#2 我建议将这些文件放在 Azure 存储中。如果需要,您可以生成适当的 SAS 令牌以使这些文件直接通过 http 地址可用,或使用 BlobStorage Nuget 包将它们作为流加载。 Blob 存储也很便宜。或者使用可以放置这些文件并在集成测试中可检索的任何服务器。

绝对不要在项目中包含这些文件!

【讨论】:

  • 我绝对喜欢第一种方法
  • 第一种方法是我昨天最终采用的方法,它似乎工作得很好。感谢大家的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 2022-11-29
  • 2021-02-21
相关资源
最近更新 更多