0

我是一名 Java 编程人员,现在也在用 C# 编写。我见过由 VS 测试生成软件生成的 Accessor 类(以从测试访问私有成员或函数)。我应该故意创建访问器吗?如果是,为什么

4

3 回答 3

2

MSTest 中生成的访问器用于测试类的私有部分。所以已经在那里我会问自己我们是否应该明确地测试内部结构。

我相信单元测试应该只锻炼一个类的公众形象,因此生成的访问器的东西变得过时了。根据我的经验,这是一件好事,因为我发现维护它们并非易事,尤其是当事情发生变化时(正如他们通常在进行重构时所做的那样)。

于 2009-08-22T10:02:00.877 回答
1

Roy Osherove 的 The Art of Unit Testing中,他提到了关于你的类的消费者的一个非常重要的事情。单元测试是消费者并使用 API。如果您需要更改 api 的可见性然后进行测试,那么您应该这样做。如果可以避免,请不要使用访问器。

事实上,我建议阅读这本书 :-)

于 2009-08-22T11:00:25.313 回答
0

如果您使用访问器,则可以在不更改 API 的情况下更改底层实现。

通过公开一个公共字段,您可以公开该数据如何存储的内部结构。相反,使用公共属性可以让您更灵活地更改数据在内部存储的方式,而不会破坏公共接口。

在 C# 3.0 及更高版本中,当属性访问器中不需要额外的逻辑时,自动实现的属性使属性声明更加简洁。它们还使客户端代码能够创建对象 当您如下例所示声明属性时,编译器会创建一个私有的匿名支持字段,只能通过该属性的 get 和 set 访问器访问。

自动实现的属性

例如:

// Auto-Impl Properties for trivial get and set
public string Name { get; set; }
public int CustomerID { get; set; }
于 2009-08-22T09:46:53.200 回答