使用内存磁盘进行I/O单元测试

本文关键字:单元测试 内存 磁盘 | 更新日期: 2023-09-27 18:27:49

我在C#中有以下设置-我有一个组件,它在构造函数中获得一个文件夹路径,然后,它处理一些巨大的数据,并以几个文件的形式写入磁盘(数量级约为1Gb,非常耗费IO)。在检索时,数据被读入(也是IO密集型),我的单元测试(nunit with MOQ,setup as actual a component test)将它们与原始数据进行比较。问题是,单元测试需要几分钟才能完成,这很烦人。我想,有没有一种方法可以在测试夹具设置中创建RAMDrive或RAMFolder,并在拆卸时将其删除。我不能使用内存文件或内存流,因为在组件之外,没有人应该知道确切使用了哪些文件。

知道吗?

谨致问候,Petr

使用内存磁盘进行I/O单元测试

  1. 获取SSD
  2. 切割单元测试
  3. 抽象存储访问在一个子组件中单独测试。。。然后使用内存中的数组来模拟文件

三种可行的方法。我会试着用3,但仍然要买一个固态硬盘。SSD非常适合大量的小型IO,猜猜编译是什么(甚至是C#——大量的源文件)。

为什么需要在测试后将其拆除?为什么不在ClassCleanup中的单元测试后清空所有文件呢?

作为RAMdisk软件,您可能需要查看RAMdisk 11http://www.superspeed.com/desktop/ramdisk.php.

你当然也可以模拟文件的实际编写,不是吗?

我会尝试让businessobject具有两个api,一个带有文件名(用于现有代码),另一个带有流。

文件api只是一个薄薄的层,它将调用转换为进行处理的streamapi。

单元测试可以使用流api(即内存流),而wole系统则通过fileapi

处理文件流