繁体   English   中英

如何在没有成对的getter的类上对setter进行单元测试?

[英]How to unit test setters on classes that do not have paired getters?

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

我希望能够测试这些设置器 ,以确保它们正确设置了数据。

我发现我的选择是:

  • 为这些功能编写吸气剂 ,以便我可以测试它们的设置是否正确
  • 编写诸如testAllSetters()类的方法来一次测试它们

但是,这两种解决方案都是不受欢迎的,因为仅出于测试目的,它就向类添加了不必要的功能。

  • 我还可以测试该类的输出,以查看它总体上是正确的,但是在许多情况下,这并不能像我希望的那样测试各个设置器

在没有成对的吸气剂的类上对单元测试设置器进行单元化的最佳方法是什么?

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

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

撇开单元测试,您可能仍要考虑在这些属性上使用吸气剂,因为对于开发人员来说,不使用吸气剂的属性是很不直观的。 框架设计准则甚至对此有一条规定:

请勿提供仅设置的属性,或者提供的设置程序比获取程序具有更广泛的可访问性的属性。

您可能还需要考虑到这一点。

祝好运。

您可以在调用设置器后使用PrivateObject来检查私有成员是否已正确更新

设置员有逻辑吗?

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

否:请勿直接设置二传手。 没有意义。 测试使用设置者数据集的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM