【发布时间】:2013-08-28 18:53:52
【问题描述】:
我想为一些带有字节数组参数的类编写单元测试。 总共有大约 100 个方法,数组大小从 5-10 到几百个字节不等。 我应该如何生成和存储测试数组?
- 我应该手动生成它们还是通过一些生成器代码(也应该进行单元测试)?
- 我应该在测试期间在内存中生成它们,还是应该提前生成它们并将它们存储在某个地方?
- 在后一种情况下,我应该将它们存储在文件中(即使单元测试不应该触及文件系统),还是应该将它们存储在测试代码本身中(例如,以十六进制格式的字符串,像这样:“47 08 00 14 等”)?
我开始手动创建它们并将它们以十六进制字符串的形式存储在测试代码中。我用这样的二进制字符串做了很多工作,所以我可以相对容易地阅读它们(“我什至没有看到代码。我看到的只是金发、黑发、红发。”)问题是,这种方法很慢,而且我认为使用自动生成器会导致更易于维护的测试。但是我应该如何测试生成器的输出是否正确?听起来像第 22 条军规……
【问题讨论】:
-
But how should I test that the output of the generator is correct? Sounds like Catch-22...以及如何测试您的测试是否真的在测试他们需要测试的内容? :-) 在某个时刻,你必须信任和希望 :-) :-) -
@xanatos 当然。但在这种特殊情况下,这一点在哪里?你有什么建议?
-
这可能是一个愚蠢的问题,但是对这样的生成器进行单元测试有什么问题?
-
@Halvard 生成器的方法将使用其用户友好的参数(布尔值、整数、字符串等)创建给定结构的字节数组。在这种方法的单元测试中,您给出一些参数,并断言输出是所需的字节数组。但是如何创建和存储这些字节数组呢?这是同样的问题。唯一的区别是,在原始情况下,字节数组是测试方法的输入——在生成器的情况下,它们是输出。
-
您能否展示并解释 100 种方法中的一种?它可能会更好地说明您要实现的目标。
标签: c# unit-testing nunit bytearray hex