我编写了集成测试来测试使用Activiti作为工作流引擎的应用程序的几个边界事件的执行。在定期运行Spring Boot应用程序时,所有边界事件都能正确执行。
联调类使用以下注释:
@Transactional
@RunWith(SpringRunner.class)
@ActiveProfiles("it")
@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)
在启动联调时,日志指示异步hob执行器启动:
[INFO ] 2018-04-26 09:58:44 [main] -- Starting up the default async job executor [org.activiti.engine.impl.asyncexecutor.DefaultAsyncJobExecutor].
[INFO ] 2018-04-26 09:58:44 [main] -- Creating thread pool queue of size 100
[INFO ] 2018-04-26 09:58:44 [main] -- Creating executor service with corePoolSize 2, maxPoolSize 10 and keepAliveTime 5000
集成测试获取给定流程的当前任务,并使用Activiti的taskService.完成(…)
方法完成多个用户任务,直到它到达边界计时器事件。
计时器截止日期设置正确,则日志指示事件已启动且计时器已安排:
[DEBUG] 2018-04-26 09:58:55 [main] -- Setting workflow variable dueDate to Thu Apr 26 09:59:25 CEST 2018 for process 17
[DEBUG] 2018-04-26 09:58:55 [main] -- Activiti Event received: TIMER_SCHEDULED for process instance 17
但是计时器永远不会触发(TIMER_FIRED
不会触发)。
在与测试(it
)相同的配置文件中运行应用程序可以正常工作,计时器的行为符合预期。
我是否错过了启用Activiti的异步作业执行器所需的任何测试类注释?
你使用的是哪个版本?为什么你在里面有@Transactional注释?这是一个联调,意味着Spring启动应用程序将运行,你的测试将是一个客户端,那里没有事务性的事情发生,对吗?除非我在你的设置中遗漏了一些东西。