我正在为具有 setter但没有getter 的属性的类编写单元测试。
我希望能够测试这些setter 以确保他们正确设置数据。
我发现我的选择是:
testAllSetters()
等方法,立即对所有方法进行测试但这两种解决方案都是不受欢迎的,因为它只是为了测试它而在课程中添加了不需要的功能。
在没有配对的getter的类上测试setter的最佳方法是什么?
答案 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设置的数据的方法。