Модульное тестирование Spring POJO с введенными EJB - PullRequest
1 голос
/ 10 января 2012

Я не уверен, возможно ли это, но я пытаюсь придумать тест Spring Junit против Spring POJO, который внедрил в него EJB. когда я запускаю тест, я всегда получаю нулевое исключение для вставленного EJB в моем тестовом POJO. Проблема в том, что методы POJO не ожидают интерфейсов EJB в качестве параметров метода, поэтому они должны быть доступны, когда мой POJO загружен через контекст Spring. Я использую Spring 2.5 и EJB 3.0 в контейнере weblogic 10.3. Я добавил <context:annotation-config/> в мой весенний контекстный файл.

Например, у меня есть EJB, который внедряется в POJO, аналогичный приведенному ниже коду, и я хотел бы провести модульный тест для методов MySpringPojo. Я видел, что независимо от того, как я пытаюсь проверить, мой EJB не вводится в POJO для запуска теста. Может кто-нибудь предложить, как мы могли бы проверить этот сценарий? Любая помощь с фрагментом кода будет потрясающей ...

public class MySpringPojo {
   @EJB
   private GreetingManager greeting;

   public String greetUser(String name) {
      return greeting.generateGreeting(name);
   }
}

@Remote
public interface GreetingManager {
   public String generateGreeting(String name);
}

@Stateless
public class GreetingManagerBean implements GreetingManager {
   public String generateGreeting(String name) {
       return "Hello" + name;
   }
}

-Sonu

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Я не уверен, что вам все еще нужен ответ, но я написал статью, в которой EJB-компоненты вводятся в Spring и тестируют POJO в контейнере Weblogic.Вы можете прочитать об этом здесь .

Надеюсь, это поможет.

0 голосов
/ 10 января 2012
  1. Поскольку вы используете JUnit в среде, отличной от Java EE, реальные EJB-компоненты не будут доступны.
  2. Что вам нужно сделать, это добавить заглушенную реализацию GreetingManager, скажем GreetingManagerStub, и протестировать свою бизнес-логику.
...