java - 如何在 Spring 中测试 @Scheduled - 而不是 SpringBoot
问题描述
我发现了这个问题的许多类似主题,但我仍然没有针对我的案例的解决方案。我想在 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的解决方案。有什么简单的选择吗?
解决方案
推荐阅读
- python - 使用 matplotlib.imshow 从多个部分组成 rgb 图像
- r - 是否有计算生存概率的威布尔估计的函数
- python - 当有打印指令时,线程没有做他们的工作
- javascript - 如何将 Arduino 代码在线编译成 .hex 文件(与 Arduino 一起闪烁)?
- r - 如何编写具有固定和随机效应的线性模型
- python - 使用 openpyxl 添加注释
- powershell - Powershell,我确实输入了一个列表收集数据并将整个列表输出到一个 CSV
- formatjs - 如何给 intl-messageformat-parser 起别名?
- django - 如何用标准 django 管理视图中的操作列替换 django-simple-history 视图中的评论列?
- python - 匹配几个可变参数