小编jsd*_*vel的帖子

在参数上调用静态方法而不在参数中实例化类

我真的进入了TDD,我开始在jUnit中使用mockito来提高我测试代码的能力.我真的很喜欢mockito!

我注意到我必须改变我对编码的思考方式,比如尽可能地将协作者传递给方法,并尽可能限制构造函数中的工作.

以下场景需要来自SO专家的一些建议.

假设我有一个方法,它会在某个类上调用一些静态方法.例如

public void method(){
    OtherClass.staticMethod();
}
Run Code Online (Sandbox Code Playgroud)

这通常很糟糕,但在我的场景中需要它.为了使代码在我的单元测试中更易于测试,我想避免依赖于OtherClass并将其作为参数传递.

这不起作用,因为它产生编译时错误.

public void method(Class<? extends OtherClass> util){
    util.staticMethod();
}
...
method(OtherClass.class);
Run Code Online (Sandbox Code Playgroud)

这可行,但我不喜欢实例化的OtherClass,如果我不需要,因为它只是一类静态实用程序,如方法:

public void method(OtherClass util){
     util.staticMethod();
}
...
method(new OtherClass());
Run Code Online (Sandbox Code Playgroud)

我向您提问:如果不使用新关键字,是否有更好的方法来实现这一目标?

java

7
推荐指数
1
解决办法
2239
查看次数

标签 统计

java ×1