如果通过maven运行,则集成测试会失败,但如果通过IDE

时间:2015-06-25 07:59:59

标签: java maven java-ee intellij-idea cucumber

我有一个验收测试模块,它对另一个模块进行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

似乎没有为每个功能/场景应用注释。

有没有人遇到过这个?非常感谢你的帮助。

0 个答案:

没有答案