Unit testing Mockito-类中的mock字段
我有一个关于Mockito框架的问题。有没有办法在类中模拟字段?假设我们有:Unit testing Mockito-类中的mock字段,unit-testing,spring-mvc,mockito,Unit Testing,Spring Mvc,Mockito,我有一个关于Mockito框架的问题。有没有办法在类中模拟字段?假设我们有: @组件 公共A类{ @自动连线 B B; public methodExample(){b.doSth();} } C类{ @自动连线 A A; } @试验 public void testMethodExample(){…} } 是否有可能模拟B对象以强制方法doSth的返回值?我知道我可以将mock对象作为构造函数的参数传递,但我想知道是否还有其他选项?您可以提供一个受保护的setter,仅用于测试,并使您的测试
@组件
公共A类{
@自动连线
B B;
public methodExample(){b.doSth();}
}
C类{
@自动连线
A A;
}
@试验
public void testMethodExample(){…}
}
是否有可能模拟B对象以强制方法doSth的返回值?我知道我可以将mock对象作为构造函数的参数传递,但我想知道是否还有其他选项?您可以提供一个受保护的setter,仅用于测试,并使您的测试包结构镜像主代码的包结构 或者,您可以根据需要使用Powermock扩展来模拟私有/受保护字段 看 你可以看一看。 通过此注释,Mockito将分别尝试通过构造函数、属性和字段分配mock,并在第一个成功的方法停止。 因此,您的场景的单元测试可能如下所示:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith( MockitoJUnitRunner.class )
public class c
{
@InjectMocks
A a;
@Mock
B b;
@Test
public void testMethodExample()
{
a.methodExample();
}
}
以下几点值得注意:
将只考虑用@injectmock
@Mock
- 有必要使用
或调用MockitoJUnitRunner
org.mockito.MockitoAnnotations.initMocks(this)代码>以创建和注入模拟
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith( MockitoJUnitRunner.class )
public class c
{
@InjectMocks
A a;
@Mock
B b;
@Test
public void testMethodExample()
{
a.methodExample();
}
}