我的单元测试有时会失败,但有时则不会失败:
public void GetVehiclePictures_ReturnsPictures()
{
List<string> _Pictures = new List<string>();
long _BytesWritten = 0;
using (MemoryStream _MemoryStream = new MemoryStream())
{
_Pictures = __PVSVehiclePicturesAggregator.WritePicturesAsTarGz(_MemoryStream, __DummyVehicle);
_BytesWritten = _MemoryStream.Length;
}
Assert.AreEqual<int>(1, _Pictures.Count);
Assert.IsTrue(_BytesWritten >= 3384);
}
正在使用固定大小的图像测试 __PVSVehiclePicturesAggregator.WritePicturesAsTarGz(_MemoryStream, __DummyVehicle);
,因此对steam的写入数据应完全相同。 (_DummyVehicle设置为在测试中返回一个固定大小的图像)
_MemoryStream.Length
有时返回3384或3385,因此>=
测试。目前,测试在CI服务器上的Assert上失败,但在本地运行正常。
为什么返回的长度会有所不同?在询问长度之前,我应该冲洗还是关闭MemoryStream?
测试框架是Microsoft Fakes。 SharpZipLib用于编写tar gzip流。