我正在编写具有具有的属性的课程的单元测试 二传手,但没有得到.

我想能够 测试这些设置器 为了确保他们正确设置数据。

我发现我的选择是:

  • 写盖特斯 对于这些功能,我可以测试它们是否正确设置
  • 写这样的方法 testAllSetters() 一次测试它们

但是两种解决方案都是 不良 由于它仅仅是为了测试它,因此在类中添加了不需要的功能。

  • 我还可以测试课程的输出,以确保它通常是正确的,但是在许多情况下,这并不能像我想要的那样测试单个设置器

在没有配对getters的课程上进行单位测试设置器的最佳方法是什么?

有帮助吗?

解决方案

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

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

抛开单元测试,您仍然可能需要考虑在这些属性上有所了解,因为没有Getters的属性对开发人员来说是非常直觉的。这 框架设计指南 甚至有一条规则:

不要 提供仅设置属性或属性的设置器,其可访问性比Getter更广泛。

您可能还想考虑这一点。

祝你好运。

其他提示

您可以使用 私有对象 检查私人成员在调用设置器后已正确更新

设置器有任何逻辑吗?

是:要么打开getter。 Java:受保护并在同一包装中进行单位测试。 C#:InternalSvisibletoatibute。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top