gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:43:11 25 4
gpt4 key购买 nike

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

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

鉴于这些字段是私有(private)的,因为它们只在类中有意义,我必须找到一种从测试类访问它们的方法。

我只看到两种方式:

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

在正常情况下,我会选择最后一个(尽管我真的不喜欢仅仅出于测试原因而更改界面)。但是,仅仅为了测试就在我的类中编写 50 个新方法真的有意义吗?在这种情况下,将字段设置为 protected 不是更好吗,因为有这么多方法,类会变得不清楚吗?

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

最佳答案

这些场如何在外部行为方面表现出来?这就是您应该测试的内容。

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

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

关于java - 测试具有多个字段的类的字段状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com