.NET是否有办法,我可以添加伪造的I / O进行自动化测试?
我看到了这个问题:How to best simulate IO bound work?
从概念上讲,这与我想要执行的操作类似,但是由于我不是在此测试中测量时间,而是在实际的I / O中测量时间,因此标记的解决方案将不起作用。本质上,我不在乎操作是什么,因为它与测试无关,但是对于此测试,我希望增加实际的I / O,以证明可以在被测应用程序中对其进行跟踪。我说我不在乎它是什么,但是,如果可能的话,理想的方法是更快地运行以立即提高操作系统所测量的I / O的速度。
我正在使用内置的(Windows).NET PerformanceCounters,但是我不想在测试中模拟它们-我想知道它们正在正确地跟踪(在这种情况下为I / O。)< / p>
测试代码:
[TestMethod]
public void GetCurrentIO()
{
_SUT.StartTrackingIO();
long result = default;
Parallel.Invoke(
_SimulateIOLoad,
() => { result = _SUT.GetCurrentIO(); }
);
Assert.IsTrue(result > 0, "Current IO value should be above 0");
}
答案 0 :(得分:0)
我没有伪造它,而是循环创建了一个文件并进行了测量:
private long _SimulateIOLoad()
{
long current = 0;
while (current <= 0)
{
var count = 0;
var file = Path.GetTempPath() + $"simulateIOLoad-{count}.txt";
File.WriteAllText(file, "simulateIOLoad");
File.Delete(file);
current = _SUT.GetCurrentIO();
++count;
}
return current;
}
在我的测试中,这证明可以测量大于0的I / O值。这不是我最初想要的,但是它的运行速度惊人得惊人。