我发现了这个问题的许多类似主题,但我仍然没有适合我的案例的解决方案。 我想在 Spring 5 应用程序中测试我的调度程序并计算它在一段时间内调用的次数。
这是我的日程安排:
@Component
public class CancelVisitScheduler {
@Scheduled(fixedDelay = 10000, initialDelay = 10000)
public void execute() {
// do some things
}
}
我正在尝试这样的事情:
import org.awaitility.Duration;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.awaitility.Awaitility.await;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
class CancelVisitSchedulerTest {
@Mock
private CancelVisitScheduler cancelVisitScheduler;
@BeforeEach
void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
void shouldExecuteAfter10Seconds() {
await().atMost(Duration.ONE_MINUTE).untilAsserted(() -> verify(cancelVisitScheduler, times(4)).execute());
}
}
但我收到这样的错误:
org.awaitility.core.ConditionTimeoutException: Assertion condition defined as a lambda expression in path....CancelVisitSchedulerTest
Wanted but not invoked:
cancelVisitScheduler.execute();
-> at path....CancelVisitSchedulerTest.lambda$shouldExecuteAfter10Seconds$0(CancelVisitSchedulerTest.java:25)
Actually, there were zero interactions with this mock.
within 60 seconds.
我找到的所有答案都是 Spring Boot 应用程序,但我需要一个 Spring 的解决方案。 有什么简单的选择可以做到这一点吗?
我偶然发现了这个帖子,因为我目前遇到了这个问题。我看到没有答案,但你能在不使用 spring boot 的情况下解决你的问题吗?