如何对二进制格式阅读器类进行单元测试
本文关键字:单元测试 二进制 格式 | 更新日期: 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必须从磁盘读取文件。因此,这不是单元测试,而是数据驱动的集成类型测试。