Junit 如何使用Powermock模拟类及其内部静态类
我的课程是:Junit 如何使用Powermock模拟类及其内部静态类,junit,junit4,powermock,powermockito,Junit,Junit4,Powermock,Powermockito,我的课程是: public class SomeClass { private String someField; public SomeClass(String field) { someField = field; } public String getUrl() { return "http://" + someField; } public static class Builder
public class SomeClass {
private String someField;
public SomeClass(String field) {
someField = field;
}
public String getUrl() {
return "http://" + someField;
}
public static class Builder {
private String uri;
public Builder(String url) {
this.uri = url;
}
public SomeClass build() {
return new SomeClass(uri);
}
}
}
正在从另一个类调用上述类,如下所示:
class MainClass {
private SomeClass someClass;
public boolean isUrlAvailable() {
someClass = new SomeClass.Builder("myURI").build();
String url = someClass.getUrl();
if (url != null && url.length() > 10) {
return true;
}
return false;
}
}
我的要求是测试main类,为此我需要模拟SomeClass和SomeClass.Builder类。我试图模拟这两个类,但未能成功实现要求。您正在显示的代码不应要求您模拟任何内容。它只使用该生成器来构建某些东西。假设您已经单独测试了某个类/构建器—您只需验证Main中的方法是否给出了正确的结果 无论如何:模拟静态类是可能的-请参阅。唯一需要注意的事情是:正确设置所有的先决条件,例如,设置所需的注释:
RunWith(PowerMockRunner.class)
@PrepareForTest(SomeClassBuilderClass.class)
除此之外:首先,你不需要嘲笑任何静态的东西。您的唯一的问题是呼叫新建
而且-这里真正的答案是:只需在某个类的实例中通过(而不是在被测试的方法内部调用newbuilder
)