ahs*_*ele 7 c# tdd unit-testing arrange-act-assert
这似乎格外重手,但该规则会公开提供应测试什么应该自动实现的属性进行测试?
客户类
public class Customer
{
public string EmailAddr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
经过测试
[TestClass]
public class CustomerTests : TestClassBase
{
[TestMethod]
public void CanSetCustomerEmailAddress()
{
//Arrange
Customer customer = new Customer();
//Act
customer.EmailAddr = "foo@bar.com";
//Assert
Assert.AreEqual("foo@bar.com", customer.EmailAddr);
}
}
Run Code Online (Sandbox Code Playgroud)
ckr*_*mer 10
我通常认为任何不执行操作的代码都不值得测试.这通常意味着我不测试属性(自动实现或不自动),因为它们只是设置或返回值.
如果属性的getter或setter执行某种"工作",这将改变,例如可能根据某些其他field/property/whatever的状态返回两个(或更多)值中的一个.
如果你还没有看到它,我强烈推荐Roy Osherove 关于单元测试的书.它解决了各种"测试什么时候"类型的问题,包括这个问题.
如果从自动实现的属性切换到完全不同的属性会发生什么?测试似乎是多余的,因为您知道实现 - 在编写测试时不应该考虑这一点.
当然,这取决于您实时更改实施的可能性.