在 JUnit / Mockito 测试中使用 Mocked 对象
Use Mocked object in JUnit / Mockito test
我有一个 JUnit 测试显示
public class EventHandlerTest {
@Mock
ThreadPoolExtendedExecutor threadPoolExtendedExecutor;
private EventHandler handler;
private Map<Queue<SenderTask>> subBuffers = new HashMap<>();
@Before
public void setUp() {
// PROBLEM: threadPoolExtendedExecutor null!
handler = new EventHandler(subBuffers, threadPoolExtendedExecutor);
}
}
当我在 setUp 中调用 new 时,我有 threadPoolExtendedExecutor=null
。
我想插入一些模拟的 threadPoolExtendedExecutor
所以,我在调用它的方法时没有 NullPointer
问题(此时简单的接口模拟对我来说就足够了)
您可以使用(在设置中)
简单地模拟它
threadPoolExtendedExecutor = mock(ThreadPoolExtendedExecutor.class);
@Before
public void setUp() {
threadPoolExtendedExecutor = mock(ThreadPoolExtendedExecutor.class);
handler = new EventHandler(subBuffers, threadPoolExtendedExecutor);
}
您也可以让 MockitoJUnitRunner 为您完成:
不要忘记通过使用 @InjectMocks
注释在被测服务中注入模拟
@RunWith(MockitoJUnitRunner.class)
public class EventHandlerTest {
@Mock
ThreadPoolExtendedExecutor threadPoolExtendedExecutor;
如果您想在测试 class 字段上使用 @Mock
或 @InjectMocks
注释,则需要在 class 处添加 @RunWith(MockitoJUnitRunner.class)
等级.
@RunWith(MockitoJUnitRunner.class)
public class EventHandlerTest {
@Mock
ThreadPoolExtendedExecutor threadPoolExtendedExecutor;
另一种方法是不使用上述注释并通过调用 org.mockito.Mockito.mock()
.
手动创建模拟
我有一个 JUnit 测试显示
public class EventHandlerTest {
@Mock
ThreadPoolExtendedExecutor threadPoolExtendedExecutor;
private EventHandler handler;
private Map<Queue<SenderTask>> subBuffers = new HashMap<>();
@Before
public void setUp() {
// PROBLEM: threadPoolExtendedExecutor null!
handler = new EventHandler(subBuffers, threadPoolExtendedExecutor);
}
}
当我在 setUp 中调用 new 时,我有 threadPoolExtendedExecutor=null
。
我想插入一些模拟的 threadPoolExtendedExecutor
所以,我在调用它的方法时没有 NullPointer
问题(此时简单的接口模拟对我来说就足够了)
您可以使用(在设置中)
简单地模拟它threadPoolExtendedExecutor = mock(ThreadPoolExtendedExecutor.class);
@Before
public void setUp() {
threadPoolExtendedExecutor = mock(ThreadPoolExtendedExecutor.class);
handler = new EventHandler(subBuffers, threadPoolExtendedExecutor);
}
您也可以让 MockitoJUnitRunner 为您完成: 不要忘记通过使用 @InjectMocks
注释在被测服务中注入模拟@RunWith(MockitoJUnitRunner.class)
public class EventHandlerTest {
@Mock
ThreadPoolExtendedExecutor threadPoolExtendedExecutor;
如果您想在测试 class 字段上使用 @Mock
或 @InjectMocks
注释,则需要在 class 处添加 @RunWith(MockitoJUnitRunner.class)
等级.
@RunWith(MockitoJUnitRunner.class)
public class EventHandlerTest {
@Mock
ThreadPoolExtendedExecutor threadPoolExtendedExecutor;
另一种方法是不使用上述注释并通过调用 org.mockito.Mockito.mock()
.