我对TDD有点新鲜。我已经开始在视图模型上创建我需要的属性作为普通的自动属性。单元测试Viewmodel
public string Firstname { get; set; }
然后我创建一个测试
[TestMethod]
[Tag("Property")]
public void FirstNameTest()
{
ViewModel = new CustomerViewModel();
ViewModel.PropertyChanged += (s, e) =>
{
Assert.AreEqual("Firstname", e.PropertyName);
Assert.AreEqual("Test", ViewModel.Firstname);
};
ViewModel.Firstname = "Test";
}
然后我会延长实际执行,使测试通过这样的:
public string Firstname
{
get { return _contact.FirstName; }
set
{
if (_contact.FirstName == value)
return;
_contact.FirstName = value;
RaisePropertyChanged(() => Firstname);
}
}
我的问题是,测试仍然通过为Aut属性。对我来说任何提示我如何改进我的过程?
你不应该把断言拉姆达内。断言在失败时会抛出异常。如果你在lambda表达式中这样做,那么这些将在被测对象内部激发,并且冒着被对象处理的风险。您应该将结果分配给测试范围中的一些(通常为bool)变量,然后在您返回并解开调用堆栈时对这些变量进行断言。 – Tormod 2011-04-25 14:49:02