MemoryStream.Length返回略有不同的值

时间:2015-09-18 12:27:47

标签: c# .net unit-testing

我的单元测试有时会失败,但有时则不会失败:

    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流。

0 个答案:

没有答案