如何模拟带注释的EJB?

时间:2011-01-27 15:39:40

标签: java mocking ejb-3.0

我已经搜索了它,但似乎很难找到关于模拟依赖注入对象(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-methode使用了一些我无法在测试中模拟的JAAS东西。)

2 个答案:

答案 0 :(得分:3)

可以看看Mockito。您可以在setter上应用@EJB注释,并在测试中注入模拟的LoginService。

答案 1 :(得分:1)

另一个选择是简单地提供ILoginService接口的第二个实现。第二个实现是mock,但是没有必要使用特殊的Mock库或支持。

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