[英]How to unit test a binary format reader class
我正在研究一个类,该类读取一个二进制文件并存储该二进制文件中存在的值。
问题是如何对该类进行单元测试,我现在所做的是,我部署了一个示例文件,并仅针对该特定文件编写了单元测试。
示例:-我知道二进制文件中的第一个值将是一个整数,其值将为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%。 这与代码覆盖率无关。
您可以改善什么? 除了创建许多测试,您还可以查看使用DataDriven测试http://msdn.microsoft.com/zh-cn/library/ms182527.aspx这种方法使您可以轻松更改外部文件/值,而不必重新编译代码。 更少的代码/更少的测试。
您还说过,目前只读东西,但将来可能会写东西。 作为当前状态,您的测试已经涵盖了要求的内容(即阅读)。 在此阶段尚无写作要求,因此您无需担心。
只是一个旁注/不相关:-您的MyCustomBinaryReader必须正在从磁盘读取文件。 因此,这不是单元测试,而是数据驱动的集成类型测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.