[英]Object creation mocking mockito
我有一个班级的顶部和底部。 我想对创建底部对象的原子类进行单元测试。
public class top {
publiv top() {
bottom b = new bottom("value");
}
}
单元测试班:
public class topTest {
@Test
public void test(){
top a = new top();
}
}
在测试中为顶级类别创建对象时,它将为底层类别创建对象。
在这里,我想模拟底层对象的创建。 谁能帮我这个忙。
为此,您应考虑将底部对象作为参数传递。 当对象依赖于该对象时,始终将对象作为参数传递始终是一个好习惯。
public class Top {
private Bottom bottom;
public Top(Bottom bottom) {
this.bottom = bottom
}
}
public class TopTest {
@Test
public void test(){
Bottom bottom = mock(Bottom.class);
Top top = new Top(bottom);
}
}
您将需要将创建底部实例的逻辑移动到某个地方。 可以使用类似的可覆盖方法:
public class top {
public top() {
bottom b = new bottom("value");
}
protected bottom createBottom() {
return new bottom("value");
}
}
然后您可以在测试中覆盖它:
public class topTest {
@Test
public void test(){
top a = new top() {
protected bottom createBottom() {
return Mockito.mock(bottom.class);
}
};
}
}
或者,您创建一个BottomCreator类,在构造时将其传递给Top,并在测试时使用模拟/伪造版本。
public class top {
private final BottomCreator bottomCreator;
public top(BottomCreator creator) {
this.bottomCreator = creator;
}
public top() {
bottom b = bottomCreator.newBottom();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.