我有一个验收测试模块,它对另一个模块进行ejb调用。但是对于这个验收测试,我不希望它直接调用ejb,因为这可能导致我的测试非常慢。因此,我使用SimpleNamingContextBuilder
来模拟JNDI调用。对于我的验收测试,我使用Cucumber
框架。
我创建了自己的注释@mockJNDIServices
,JNDI的java方法看起来像
@Before("@MockJndiEntityService") public void mockJndiService() throws NamingException { final EjbServiceRemote ejbService = new EjbServiceRemoteStubImpl(); final SimpleNamingContextBuilder contextBuilder = new SimpleNamingContextBuilder(); contextBuilder.bind(EjbServiceRemote.EJB_NAME, ejbService); contextBuilder.activate(); }
EjbServiceRemoteStubImpl
是一个我希望测试的存根,而不是服务本身。
并且要素文件的标题为
@MockJndiEntityService
@transaction
Feature: Lookups from library of policy
当我通过IDE(Intellij
)运行此代码时,它工作正常,一切都通过。
但是当我通过构建工具(Maven
)运行它时,我得到远程查找失败
引起:javax.naming.NameNotFoundException:名称 [EJB / EjbServiceEJB#ejb.service.EjbServiceRemote] 没约束; 1个绑定: [EJB / EjbServiceEJB#ejb.service.EjbServiceRemote
似乎没有为每个功能/场景应用注释。
有没有人遇到过这个?非常感谢你的帮助。