我正在进行Mockito
和JUnit
整合。为了模拟对象,我创建了一些setter方法
@Mock
private SomeDaoImplClass someDaoImplClass
jdbcTamplate = Mockito.mock(NamedParameterJdbcTamplate.class)
someDaoImplClass.setNamedParameterJdbcTamplate(jdbcTamplate)
所以方法setNamedParameterJdbcTamplate(jdbcTamplate)
不存在,我在课堂上创建了这个setter method
。
我得到了一些您无法在业务类中创建这些set方法的信息
b'coz是其有影响力的业务部门。
请有人建议set methods
如何影响BU。
答案 0 :(得分:0)
没有业务对象应该分配自己的依赖项(你知道,因为那个Inversion of Control/Dependency Injection)
因此,如果您需要向对象提供某些,您可以使用setter或构造函数(后者是首选)来执行此操作
确实,仅仅为了测试而添加方法是一种不好的做法。在这种情况下,它甚至可能更糟糕:添加setter禁止我们创建对象immutable,这在处理多个线程时是必需的,并添加了一些安全限制(构造函数完成后没有属性没有初始化。< / p>
如果您需要添加这些方法记录并将其可见性设置为默认,那么它只能从同一个包中看到(测试将在同一个包装上),以尽量减少对生产的影响
如果你不能添加一个setter或修改构造函数......那么,它并不是全部丢失。您可以使用reflection。通过使用它,即使没有访问器甚至最终属性,您也可以修改对象的任何属性。 请注意,这在运行时会较慢,需要一些异常处理