我有很多测试可以在我的计算机上运行(因为它们是逐个运行的,而不是在很多线程中运行)但是它们在远程服务器上运行。
如何禁止此类并行运行?我还有许多不同的类,它们可以并行工作,但在这个类中,模拟行为在每个测试中应该是不同的。 在并行运行时,我猜对实例变量没有控制权:
@Mock
private EventDao eventDao;
并且它随机运行,这就是断言错误发生的原因吗?
我猜原因是:
doAnswer(invocationOnMock -> eventModel).when(eventDao).loadEvent(anyObject(), anyObject());
并且每个测试都记录了这个模拟:
@RunWith(MockitoJUnitRunner.class)
public class HoldServiceTest {
@Mock
private EventDao eventDao;
@InjectMocks
private EventServiceImpl eventService = new EventServiceImpl();
@Test
public void shouldEventBeProcessed() {
EventModel eventModel = createEvent();
doAnswer(invocationOnMock -> eventModel).when(eventDao).loadEvent(anyObject(), anyObject());
eventService.processEvent(eventModel);
assertTrue(eventModel.isProcessed());
}
@Test
public void shouldEventBeRed() {
EventModel eventModel = createEvent();
doAnswer(invocationOnMock -> eventModel).when(eventDao).loadEvent(anyObject(), anyObject());
eventService.processEventRed(eventModel);
assertTrue(eventModel.isRed());
}
@Test
public void shouldEventBeGreen() {
EventModel eventModel = createEvent();
doAnswer(invocationOnMock -> eventModel).when(eventDao).loadEvent(anyObject(), anyObject());
eventService.processEventGreen(eventModel);
assertTrue(eventModel.isGreen());
}
}