【发布时间】:2011-01-30 20:32:15
【问题描述】:
我对 TDD 有点陌生。我已经开始在视图模型上创建我需要的属性作为普通的自动属性。
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 中。断言失败时抛出异常。如果您在 lambdas 中执行此操作,那么它们将在被测对象内部触发,并且您冒着被对象处理的风险。相反,您应该将结果分配给测试范围内的一些(通常是 bool)变量,然后在您返回并展开调用堆栈时对这些变量进行断言。
标签: c# .net silverlight unit-testing tdd