如何在Spring的Junit测试中使用来自服务器(如ManagedExecutorService)的注入资源
我在代码中使用ManagedExecutorService实现并发性,如下所示:如何在Spring的Junit测试中使用来自服务器(如ManagedExecutorService)的注入资源,spring,concurrency,junit,wildfly,Spring,Concurrency,Junit,Wildfly,我在代码中使用ManagedExecutorService实现并发性,如下所示: @Resource private ManagedExecutorService defaultManagedExecutorService; import static org.mockito.BDDMockito.*; .... ManagedExecutorService mes = mock(ManagedExecutorService.class); ExpectedLookupTemplate jn
@Resource
private ManagedExecutorService defaultManagedExecutorService;
import static org.mockito.BDDMockito.*;
....
ManagedExecutorService mes = mock(ManagedExecutorService.class);
ExpectedLookupTemplate jndiTemplate = new ExpectedLookupTemplate();
jndiTemplate.addObject("java:jboss/ee/concurrency/executor/default", mes);
...
如果我构建它们并将它们部署到服务器上,则可以正常工作,因为我引用了服务器上的ResourceManagedExecutorService:
<managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/>
似乎spring无法从服务器上找到我的资源
我现在能做什么
谢谢大家! 您需要“模拟”该功能,这意味着模拟一个类似的实现的真实交易,该实现实际上并不去服务器检索JNDI资源,而是使用一个虚假的结果
Spring中有一个包提供了一些测试JNDI资源的功能,您可以找到它的源代码
为了开始使用该包中的类,我将查看Spring自己的测试类,其中使用了这些JNDI模拟类。例如,查看如何使用这些类来测试JTA事务管理器
我还没有用过这个,但我会尝试这样的方法:
@Resource
private ManagedExecutorService defaultManagedExecutorService;
import static org.mockito.BDDMockito.*;
....
ManagedExecutorService mes = mock(ManagedExecutorService.class);
ExpectedLookupTemplate jndiTemplate = new ExpectedLookupTemplate();
jndiTemplate.addObject("java:jboss/ee/concurrency/executor/default", mes);
...
或者,您可以查看另一个需要模拟ManagedExecutorService
的测试类