如何对二进制格式读取器类进行单元测试

时间:2013-06-04 05:58:37

标签: c# unit-testing binaryfiles

我正在研究一个读取二进制文件并存储该二进制文件中存在的值的类。

  

问题是如何对这门课进行单元测试,我做得对   现在,我部署了一个示例文件并为此编写了一个单元测试   仅限特定文件。

示例: - 我知道二进制文件中的第一个值将是一个整数,其值将为60.所以我为此编写了单元测试。我已经为整个文件编写了测试。这些单元测试足够吗?或者我应该写些更多。

样本单元测试。我已经为所有值编写了测试。

[TestMethod]
public void First_Integer_Read_Value_Is_60
{
    // Arrange
    var expected = 60;
    var reader = new MyCustomBinaryReader(filepath);

    // Act
    var actual = reader.FirstValue;

    //
    Assert.AreEqual(expected, actual)
}

reader.FirstValue
{
    get { return BinaryReader.ReadInt32(); }
}

所以我获得了100%的代码覆盖率。但这种测试足够吗?我们如何对这类课程进行单元测试。

1 个答案:

答案 0 :(得分:0)

如果您纯粹关注MyCustomBinaryReader的测试覆盖率,因为您获得了100%的代码覆盖率,这意味着您的测试已经充分覆盖了执行“读取”行为的代码。由于您获得了正确的值,因此您也正在正确读取文件。

更难了解您的具体要求。但是,如果您阅读该文件中的每个值都很重要,那么假设您的所有测试都涵盖了每个值,那么您的数据覆盖率为100%。这与代码覆盖无关。

你可以改进什么? 您可以查看使用DataDriven测试,而不是创建许多测试 http://msdn.microsoft.com/en-us/library/ms182527.aspx 此方法允许您轻松更改外部文件/值,而无需重新编译代码。代码少/少测试。

你还说过目前它只是阅读内容,但未来可能会写东西。作为其当前状态,您的测试已涵盖所需的内容(即,阅读)。写作要求在此阶段不可用,因此您不需要担心它。

只是旁注/不相关: - 您的MyCustomBinaryReader必须从磁盘读取文件。因此,这不是单元测试,而是数据驱动的集成类型测试。