java Arquillian和TimerService
所以我有一个EJB,它有一个@Schedule注释的方法,我想用arquillian测试它,我可以很容易地直接调用这个方法,但是因为部署是在wildfly上运行的,所以计时器服务启动了,计划的方法将比预期的运行得更多,从而导致测试失败
使用arquillian时,如何禁用计时器服务?或者有没有其他方法来正确测试计时器
你可以在下面搜索框中键入要查询的问题!
所以我有一个EJB,它有一个@Schedule注释的方法,我想用arquillian测试它,我可以很容易地直接调用这个方法,但是因为部署是在wildfly上运行的,所以计时器服务启动了,计划的方法将比预期的运行得更多,从而导致测试失败
使用arquillian时,如何禁用计时器服务?或者有没有其他方法来正确测试计时器
# 1 楼答案
这是可能的。可以使用@AroundTimeout方法编写拦截器。拦截所有@Schedule和@Timeout方法。在拦截器中,您永远不会继续使用该方法,因此TimerService发出的所有调用都会被阻止
当然,这个拦截器只在测试环境中是活动的,然后如果你想在测试中调用定时方法,你可以很高兴地显式调用它们
# 2 楼答案
您绝对不应该禁用计时器服务(以及任何其他EJB容器服务)
最好的方法是放弃直接调用
@Schedule
方法。这将是侵入性最小的方法