2012-03-20 65 views
2

在我们的应用程序中,我们想检查磁盘空间异常。在不使用大量块文件的情况下模拟这种情况的最佳方法是什么?模拟磁盘空间异常

+4

对您的应用程序没有任何影响,这很难说 - 例如,您可以使用配置了“小硬盘”的虚拟机,或者您可以模拟访问磁盘的对象并抛出空间异常并查看会发生什么情况。 .. – Yahia 2012-03-20 08:56:53

+0

@Yahia:我可以使用fsutil文件createnew命令创建一个大文件。是否会引起其他问题? – 2012-03-20 09:06:53

+1

你可以但由于磁盘被整个操作系统(其他程序等)使用,你可以使整个机器不稳定(取决于其他软件运行)... – Yahia 2012-03-20 09:09:28

回答

7

有很多方法(虚拟驱动器,小分区,甚至一个巨大的文件来填充您的测试分区)。

通常我更喜欢使用磁盘配额,因为它的快速改变(让我的手在几秒钟内测试,但我也可以将它集成在我的自动化测试),我可以自由地尝试不同的条件(低磁盘空间,非常低的磁盘空间,磁盘满)。此外,您还可以不同地处理“磁盘配额不足”和“磁盘已满”(如果需要)。

为特定用户分配磁盘配额并使用该凭据运行该应用程序。如果配额足够小,您可以模拟磁盘空间不足(您可以使用各种值检查而不会创建大量文件)。

它可以通过command line完成through UI或者干脆fsutil

fsutil quota modify k: 1000000 
+0

我可以使用fsutil文件createnew命令创建一个大文件。是否会引起其他问题? – 2012-03-20 09:06:34

+0

是的,当然你可以(因为你可以使用虚拟机),但如果你的硬盘很大,可能需要很长时间,这取决于你感觉更舒适。通常我更喜欢配额,因为我可以检查几个不同的条件而不更改分区,我可以在几秒钟内模拟我想要的(压力测试很无聊,我们知道)。 – 2012-03-20 09:22:53

2
throw new System.IO.IOException("There is not enough space on the disk."); 
3

如果您使用的是Windows 7或Windows 2008 R2,您可以创建一个small virtual disk,它安装有测试您的应用程序。这样,“低磁盘空间”磁盘就与O.S.隔离。磁盘和其他应用程序。

为此,请打开“磁盘管理”,然后选择“创建VHD”。选择一个合适的小尺寸,创建磁盘,初始化它,然后映射它。

或者,您可以使用DiskPart命令行实用程序创建并装载虚拟磁盘。

VHD本身只是主磁盘上的一个文件;这意味着您可以将VHD与任何测试套件一起发货,并在运行测试之前安装它。这使您比基于更多“基于系统”的方法(如更改磁盘配额)更具优势,因为它可以以最小的努力自动进入您的测试。