c# - 单元测试自动实现的属性是否有值(value)

标签 c# unit-testing tdd arrange-act-assert

这似乎异常严厉,但按照规则任何公开可用的东西都应该进行测试应该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/

相关文章:

xcode - 单元测试用例中的灰色指标是什么

javascript - 测试 Redux Thunk Action Creator

php - 尝试测试驱动开发

c# - 如何使 autofac KeyFilter 在 asp.net-core web api 中工作?

javascript - 当我运行单个测试或测试套件时,是否有任何方法可以将 WebStorm 配置为不创建新的运行/调试配置?

c# - 如何使用 StreamWriter 写入文件?

unit-testing - MSTest:如何增加测试时间

ruby-on-rails - ActiveRecord 是否使 Ruby on Rails 代码难以测试?

c# - 排列最小到最大的整数

c# - .net core 2.2 应用程序的 JWT 身份验证不使用身份