如何模拟带有注释的EJB?

4

我已经谷歌搜索过了,但似乎很难找到关于模拟依赖注入对象(EJB 3.0)的主题。

  public class MyTestBean
  {
    @EJB
    ILoginService mLoginService;
    public void doLogin() {
      if (!mLoginService.login(name, pass)) {
       // fehler
    }
  }

当使用openEJB运行测试时,我希望LoginService.login(name, pass)返回true。有没有一种方法可以模拟LoginService bean?
(目前,login方法在测试期间使用了一些我无法模拟的JAAS内容。)
2个回答

4
也许你可以看一下Mockito。你可以在setter上应用@EJB注解,在测试中注入模拟的LoginService。

1

另一个选择是简单地提供您的ILoginService接口的第二个实现。这个第二个实现是模拟,但不需要任何特殊的Mock库或支持。

您将此实现放在一个特殊的源文件夹中,通常称为test。然后,构建您的部署脚本,以便对于正常构建,忽略此测试文件夹。当您进行单元测试并构建用于测试的存档时,您明确包含来自测试源文件夹的Mock实现。


我的问题有点不对,所以对于我寻找的答案,你的回答似乎相当合适。我想在MyTestBean上运行测试。我只能通过IMyTestBean mContext.lookup("MytestBeanLocal")来访问MyTestBean。现在我看到我将如何调整我的配置。服务bean都有注释,因此可能使用相同的注释来模拟和实际实现,并根据测试环境或生产环境进行排除。 - justastefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接