当单元测试更新方法时该声明什么?

问题描述:

假设你想检查你的更新方法是否已经正确更新,并假设你更新了你的对象的所有字段,如果所有字段都改变了,你是否断言?当单元测试更新方法时该声明什么?

如果你有很多领域,你会怎么检查是否所有的领域都更新?如果答案是你不应该检查所有的领域,你如何保证所有领域都通过你的方法更新?

我正在使用xUnit.Net,顺便说一句。

+0

我通常会在对象内的每个字段上声明。 Assert.AreEqual(“foo”,something.Name,“更新后Foos名称错误”); – Stuart

不,你没有断言所有的领域都改变了,你断言每个领域都有预期的价值。这甚至可能包括预计不会更新的字段:您可能声称其值不变。

如果你想采取快捷方式,你可以简单地计算对象的哈希码并声明哈希码是预期的哈希码,但是有很多事情可能会出错,(一个字段可能有错误值和哈希码可能stil匹配,)和修改测试代码每次一个字段添加到可更新对象将是麻烦的,所以我会建议不要这样的捷径。

+0

感谢您的回复。为了确认,我在测试的断言部分会有很多断言。如果我有20个字段发生了变化,我会有20个断言?你可否确认? –

+2

嗯,是的。除非你更喜欢用“&&”操作符将它们​​聚集在一起,比如'assert a == 1 && b == 2;',但这会使得当出现错误时会发现错误有点困难。 –