我该如何报道这种方法?将流内容复制到第二个流

时间:2013-01-10 18:27:05

标签: code-coverage dotcover

我有以下方法,它是一种扩展方法,可以被任何 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也告诉我,我的代码的第一部分根本没有被覆盖,就是这个:

Code coverage result

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

1 个答案:

答案 0 :(得分:1)

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

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