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

本文关键字:单元测试 二进制 格式 | 更新日期: 2023-09-27 18:16:44

我正在编写一个类,它读取二进制文件并存储该二进制文件中的值。

问题是如何对这个类进行单元测试,我做对了什么现在,我部署了一个示例文件,并为此编写了一个单元测试

示例:—我知道二进制文件中的第一个值将是整数,其值将是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%的代码覆盖率。但这样的测试就足够了吗?我们如何对这些类进行单元测试呢?

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

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

很难知道你们的确切需求。但是,如果读取该文件中的每个值对您来说很重要,那么假设所有测试都覆盖了每个值,那么您的数据覆盖率就达到100%。这与代码覆盖率无关。

你可以改进什么?您可以考虑使用数据驱动测试,而不是创建许多测试http://msdn.microsoft.com/en-us/library/ms182527.aspx这种方法允许您轻松地更改外部文件/值,而无需重新编译代码。还有更少的代码/更少的测试。

你还说它现在只会读东西,但将来可能会写东西。在当前的状态下,你的测试已经涵盖了所要求的内容(即阅读)。在这个阶段没有写作要求,所以你不需要关心它。

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