Java setter方法如何改变业务需求?

Java setter方法如何改变业务需求?,java,getter-setter,business-logic,Java,Getter Setter,Business Logic,我正在进行Mockito和JUnit集成。为了模拟对象,我创建了一些setter方法 @Mock private SomeDaoImplClass someDaoImplClass jdbcTamplate = Mockito.mock(NamedParameterJdbcTamplate.class) someDaoImplClass.setNamedParameterJdbcTamplate(jdbcTamplate) 所以方法setNamedParameterJdbcTamplate(

我正在进行
Mockito
JUnit
集成。为了模拟对象,我创建了一些setter方法

@Mock
private SomeDaoImplClass someDaoImplClass

jdbcTamplate = Mockito.mock(NamedParameterJdbcTamplate.class)
someDaoImplClass.setNamedParameterJdbcTamplate(jdbcTamplate)
所以方法
setNamedParameterJdbcTamplate(jdbcTamplate)
不存在,我在类中创建了这个
setter方法。
我得到一些信息,您不能在业务类中创建这些set方法
b'coz是其有效的业务部门


请有人告诉我如何
设置影响BU的方法。

任何业务对象都不应该分配自己的依赖项(你知道,正是由于这个原因)

因此,如果需要向对象提供某些内容,可以使用setter或构造函数(后者是首选)来完成

确实,仅仅为了测试而添加方法是一种糟糕的做法。在这种情况下,情况可能更糟:添加setter会禁止我们创建在处理多个线程时需要的对象,并添加一些安全限制(构造函数完成后没有初始化的属性)

如果您需要添加这些方法对其进行记录并将其可见性设置为默认值,因此它只能从同一个包中可见(测试将在同一个包中进行),以便将对生产的影响降至最低


如果您不能添加setter或修改构造函数…那么,它并没有完全丢失。您可以利用。通过使用它,您可以修改对象的任何属性,即使没有访问器,甚至没有最终属性。请注意,这在运行时会变慢,并且需要一些异常处理。

我并不奇怪。拼写police也应该关注你。这是一个XY问题。你需要在这里说明你在尝试什么,而不是询问如何绕过你的组织策略。我喜欢做的是将字段可见性设置为默认值并添加
@VisibleForTesting