【发布时间】:2018-07-31 14:10:38
【问题描述】:
在我的实现类中,我有一个读写锁定义如下,
@Inject
@Named("CustomizedLock")
private ReentrantReadWriteLock rwLock;
我在一个名为run()的方法中使用它,
rwLock.writeLock().lock();
锁定进程。但是,当我尝试使用 mockito 进行测试时,我发现 ReentrantReadWriteLock 已初始化。但是当我尝试获取rwLock.writeLock() 时,它是空的。这是我的测试。
@Mock
private ReentrantReadWriteLock feedReadWriteLock;
@InjectMocks
private CustomModule module = mock(CustomModule.class);
/////////////////////////
@Test
public void test() {
when(module.getReadWriteLock()).thenReturn(mock(ReentrantReadWriteLock.class));
PowerMockito.doReturn(new ReentrantReadWriteLock()).when(module.getReadWriteLock());
cacheJob.run();
}
正如我所说,rwLock.writeLock() 为空,但 rwLock 已初始化。请解释一下mockito是如何发生的。理想的方法是什么?
【问题讨论】:
标签: java unit-testing junit mockito powermockito