0

我有以下方法,它是一个扩展方法,可以被任何Stream对象调用。该方法应将 Stream 的确切内容复制到另一个 Stream。

public static void CopyTo(this Stream input, Stream output)
{
   const int size = 10;
   int num;
   var buffer = new byte[size];
   input.Position = 0;
   while ((num = input.Read(buffer, 0, buffer.Length)) != 0)
   {
      output.Write(buffer, 0, num);
   }
}

我创建了一个简单的测试来验证原始 Stream 的内容是否等于最终 Stream 的内容:

[TestMethod]
public void StreamWithContentShouldCopyToAnotherStream()
{
    // arrange
    var content = @"abcde12345";
    byte[] data = Encoding.Default.GetBytes(content);
    var stream = new MemoryStream(data);
    var expectedStream = new MemoryStream();
    // act
    stream.CopyTo(expectedStream);
    // assert
    expectedStream.Length
       .Should()
       .Be(stream.Length, "The length of the two streams should be the same");
}

不幸的是,我只介绍了这个方法的一部分,因为我不验证内容是否完全相同。dotCover 也向我展示了我的代码的第一部分根本没有被覆盖,这就是:

代码覆盖率结果

我的目标是这种方法的 100% 代码覆盖率。

4

1 回答 1

1

也许您的代码没有调用您的扩展方法,而是调用了Stream.CopyTo(Stream)方法?

尝试重命名您的扩展方法以避免名称冲突。

于 2013-01-14T06:11:57.893 回答