У меня есть класс, который простирается от Thread
и хочу, чтобы JUnit проверил его. На этом этапе я не хочу проверять безопасность потоков, но просто проверить, работает ли логика реализации. Моя проблема заключается в том, что метод запуска перебирает на неопределенный срок, например .:Элегантное решение для тестирования метода запуска JUnit в реализации Thread
public void run() {
while (status.isRunning()) {
// do stuff & sleep
}
}
Для целей моего теста, я только хочу, чтобы перебрать логики в методе run
один раз. Лучшее, что я придумал, чтобы решить эту проблему, является Mockito
фиктивный объект, который использует статический счетчик и анонимную реализацию Ответ:
private static int counter = 0;
Status status = mock(Status.class);
when(status.isRunning()).thenAnswer(new Answer<Boolean>() {
public Boolean answer(InvocationOnMock invocation) throws Throwable {
if (counter == 0) {
counter++;
return Boolean.TRUE;
}
return Boolean.FALSE;
}
});
Я не уверен, это решение, является ли лучшее, что есть. Похоже, что это слишком длинный вариант для общего использования.
Может ли кто-нибудь подумать о более простом, более элегантном решении проблемы?