如何在没有配对getter的类上测试setter?

时间:2011-01-10 08:30:44

标签: c# unit-testing accessor getter-setter

我正在为具有 setter但没有getter 的属性的类编写单元测试。

我希望能够测试这些setter 以确保他们正确设置数据。

我发现我的选择是:

    这些功能的
  • 写入getter ,以便我可以测试它们是否设置正确
  • 编写testAllSetters()等方法,立即对所有方法进行测试

但这两种解决方案都是不受欢迎的,因为它只是为了测试它而在课程中添加了不需要的功能。

  • 我还可以测试类的输出以确定它一般是正确的,但在很多情况下,这并不像我想的那样测试单个setter

在没有配对的getter的类上测试setter的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

这里的问题是您不想更改单元测试的API。开始将您的单元测试视为API的另一个用户/使用者。就像开发人员使用该库一样,单元测试也有自己的一套要求。当您将单元测试视为API的使用者时,将会有一个使用这些getter的用户,并且它将证明它们是合理的。

如果无法更改您的API(例如,如果您正在开发可重用的框架),请将单元测试API内部使用InternalsVisibleToAttribute以允许您的测试库访问您的内部方法代码。

不考虑单元测试,你仍然可能要考虑在这些属性上使用getter,因为没有getter的属性对开发人员来说非常不直观。 Framework Design Guidelines甚至对此有一个规则:

  

不要提供仅限设置的属性或   具有setter的属性   比获取者更广泛的可访问性。

您可能还想考虑这一点。

祝你好运。

答案 1 :(得分:1)

您可以使用PrivateObject检查私人成员在调用setter

后是否已正确更新

答案 2 :(得分:0)

安装者有任何逻辑吗?

是:打开吸气剂。 Java:受保护并在同一个包中进行单元测试。 C#:InternalsVisibleToAttribute。

否:不要直接设置设置器。没有意义。测试使用setter设置的数据的方法。