使用内存磁盘进行I/O单元测试
本文关键字:单元测试 内存 磁盘 | 更新日期: 2023-09-27 18:27:49
我在C#中有以下设置-我有一个组件,它在构造函数中获得一个文件夹路径,然后,它处理一些巨大的数据,并以几个文件的形式写入磁盘(数量级约为1Gb,非常耗费IO)。在检索时,数据被读入(也是IO密集型),我的单元测试(nunit with MOQ,setup as actual a component test)将它们与原始数据进行比较。问题是,单元测试需要几分钟才能完成,这很烦人。我想,有没有一种方法可以在测试夹具设置中创建RAMDrive或RAMFolder,并在拆卸时将其删除。我不能使用内存文件或内存流,因为在组件之外,没有人应该知道确切使用了哪些文件。
知道吗?
谨致问候,Petr
- 获取SSD
- 切割单元测试
- 抽象存储访问在一个子组件中单独测试。。。然后使用内存中的数组来模拟文件
三种可行的方法。我会试着用3,但仍然要买一个固态硬盘。SSD非常适合大量的小型IO,猜猜编译是什么(甚至是C#——大量的源文件)。
为什么需要在测试后将其拆除?为什么不在ClassCleanup
中的单元测试后清空所有文件呢?
作为RAMdisk软件,您可能需要查看RAMdisk 11http://www.superspeed.com/desktop/ramdisk.php.
你当然也可以模拟文件的实际编写,不是吗?
我会尝试让businessobject具有两个api,一个带有文件名(用于现有代码),另一个带有流。
文件api只是一个薄薄的层,它将调用转换为进行处理的streamapi。
单元测试可以使用流api(即内存流),而wole系统则通过fileapi