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