java.lang.AssertionError - 许多线程中的Mockito测试失败

时间:2018-04-09 09:45:33

标签: java mockito

我有很多测试可以在我的计算机上运行(因为它们是逐个运行的,而不是在很多线程中运行)但是它们在远程服务器上运行。

如何禁止此类并行运行?我还有许多不同的类,它们可以并行工作,但在这个类中,模拟行为在每个测试中应该是不同的。 在并行运行时,我猜对实例变量没有控制权:

 @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());
    }
}

0 个答案:

没有答案