测试具有多个字段的类的字段的状态

时间:2013-05-29 10:21:31

标签: java unit-testing

我有一个课程,有几个,比方说50个字段。此类还有一个方法,可根据某些条件更改所有字段的状态。

我正在为该方法创建一个单元测试。此测试应根据给定条件断言所有字段的状态是正确的,因此我需要访问测试类中的字段。

鉴于字段是私有的,因为它们仅在类中有意义,我必须找到从测试类中访问它们的方法。

我只看到两种方式:

  • 将所有字段设置为受保护(或包可见性)
  • 为所有字段生成50个getter
  • 创建50个委托方法以获取这些字段的状态而不是整个对象

在正常情况下我会选择最后一个(虽然我不想仅仅因为测试原因而改变界面)。但是,为了测试,在我的课程中编写50种新方法真的有意义吗?在这种情况下将字段设置为受保护是不是更好,因为有这么多方法,这个类会变得不清楚?

请注意。反射是我想要使用的最后一个选项,因为我不喜欢在测试时使用它:我不喜欢文字引用字段,因为如果字段的名称发生变化,编译器不建议我。

2 个答案:

答案 0 :(得分:3)

这些字段如何在外部行为方面表现出来?那是你应该测试的。

听起来(目前)这些字段仅是实现的。您的单元测试应该与实现无关,您应该测试单元(类)对外部操作的行为。如果没有可辨别的行为差异,那么有什么来测试?请注意,您可以以不同的方式实现字段(不同的字段,地图中的条目等),并且您的测试应该与此无关。

如果您可以插入一个类来观察这些更改(并且,比如说,反映这些更改是一个GUI)那么您应该将其抽象到一个接口,以便您可以插入一个新的测试观察者。然后可以执行适当的断言(即它是否在场变更时被召回?)

答案 1 :(得分:0)

也许您可以通过BeanUtils找到适合您的解决方案。

班级PropertyUtils可能具有您正在寻找的功能。