Как макетировать аннотированные EJB? - PullRequest
4 голосов
/ 27 января 2011

Я уже погуглил его, но, кажется, довольно сложно найти темы о поддельных объектах (EJB 3.0).

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

При запуске тестов с openEJB я хочу иметь этот LoginService.login (name,пройти) вернуть истину.Есть ли способ издеваться над компонентом LoginService?

(В настоящее время метод входа использует некоторые JAAS-вещи, которые я не могу эмулировать во время тестов.)

Ответы [ 2 ]

3 голосов
/ 27 января 2011

Может быть, посмотрите на Мокито. Вы можете применить аннотацию @EJB к сеттеру и добавить поддельные LoginService в свои тесты.

1 голос
/ 27 января 2011

Другой вариант - просто предоставить вторую реализацию вашего интерфейса ILoginService. Эта вторая реализация - макет, но для этого не требуется никакой специальной библиотеки или поддержки.

Вы помещаете эту реализацию в специальную исходную папку, обычно называемую test. Затем вы создаете свои сценарии развертывания, так что для обычных сборок эта тестовая папка игнорируется. Когда вы выполняете свои модульные тесты и собираете архив для тестирования, вы явно включаете реализацию Mock из папки исходного кода теста.

...