当单元测试更新方法时该声明什么?
假设你想检查你的更新方法是否已经正确更新,并假设你更新了你的对象的所有字段,如果所有字段都改变了,你是否断言?当单元测试更新方法时该声明什么?
如果你有很多领域,你会怎么检查是否所有的领域都更新?如果答案是你不应该检查所有的领域,你如何保证所有领域都通过你的方法更新?
我正在使用xUnit.Net,顺便说一句。
不,你没有断言所有的领域都改变了,你断言每个领域都有预期的价值。这甚至可能包括预计不会更新的字段:您可能声称其值不变。
如果你想采取快捷方式,你可以简单地计算对象的哈希码并声明哈希码是预期的哈希码,但是有很多事情可能会出错,(一个字段可能有错误值和哈希码可能stil匹配,)和修改测试代码每次一个字段添加到可更新对象将是麻烦的,所以我会建议不要这样的捷径。
感谢您的回复。为了确认,我在测试的断言部分会有很多断言。如果我有20个字段发生了变化,我会有20个断言?你可否确认? –
嗯,是的。除非你更喜欢用“&&”操作符将它们聚集在一起,比如'assert a == 1 && b == 2;',但这会使得当出现错误时会发现错误有点困难。 –
我通常会在对象内的每个字段上声明。 Assert.AreEqual(“foo”,something.Name,“更新后Foos名称错误”); – Stuart