0

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

问题是如何对这个类进行单元测试,我现在所做的是,我部署了一个示例文件并仅为该特定文件编写了一个单元测试。

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

4

1 回答 1

0

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

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

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

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

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

于 2013-07-12T13:50:07.337 回答