java静态方法有点代码味道?
我最近与JUnit和Mockito一起研究TDD。出于某种目的,我在一个方法中使用了一个Util类(一个在项目上下文中具有方法的实用程序类)。我面临的问题是如何在Mockito中模拟此类类。我无法在Mockito中找到关于静态方法的实现。有人建议在Mockito之上使用PowerMock,但这不会取代我的JunitMockitoRunner吗
我使用静态函数的方式是:
public void doSomething(int x){
//Some code
Y y = Util.someStaticMethod(x);
//Some more code
}
编辑:我也在某个地方读到,使用静态方法是一种代码气味,是糟糕设计的标志。那么,我应该如何重构设计,结果会有什么好处呢
# 1 楼答案
如果需要模拟静态实用程序方法,那么将其作为可注入对象的实例方法,以便可以注入该对象的模拟实现。优点是它使代码更易于测试:
这就是依赖注入的主要卖点:它使代码具有可测试性