这似乎异常严厉,但按照规则任何公开可用的东西都应该进行测试应该auto-implemented properties被测试?
客户类
public class Customer
{
public string EmailAddr { get; set; }
}
测试者
[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);
}
}
最佳答案
我通常认为任何不执行操作的代码都不值得测试。这通常意味着我不测试属性(自动实现或非自动实现),因为它们只是设置或返回一个值。
如果属性的 getter 或 setter 执行某种“工作”,例如可能根据其他字段/属性/任何其他内容的状态返回两个(或更多)值之一,这将会改变。
没看过的强烈推荐Roy Osherove's book on Unit Testing .它解决了各种“测试什么以及何时测试”类型的问题,包括这个问题。
关于c# - 单元测试自动实现的属性是否有值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3065644/