编写全面的单元测试
编写全面的单元测试
乔纳森·艾伦 发表于2012 5 24
- 版块:开发
- 主题:.net, 单元测试,编程,测试驱动开发,测试
在那些声称熟悉单元测试“最佳实践”的人们中有一种常见的观点:在一个测试中你应该只写1个断言,最多2个。那些宣称这个理论的人几乎很少展示他们的单元测试并且那些单元测试确实只有一个断言。显然,如果你采纳了他们的建议,一个不重要的小方法也会需要一打儿的断言来保证质量。本文意在通过实例证明每个测试多个断言不仅是必须的而且是有益的。
让我们来考虑下一个非常典型的在数据绑定场景中很常见的Person对象:
测试FirstName 属性
我们想要测试的第一件事是设置对象的FirstName属性,一开始:
[TestMethod] public void Person_FirstName_Set() { varperson = new Person("Adam", "Smith"); person.FirstName = "Bob"; Assert.AreEqual("Bob", person.FirstName); }
然后我们想测试FirstName 属性的更改通知。
[TestMethod] public void Person_FirstName_Set_PropertyChanged() { var person = new Person("Adam", "Smith"); var eventAssert = new Granite.Testing.PropertyChangedEventAssert(person); person.FirstName = "Bob"; eventAssert.Expect("FirstName"); }
W