使用注入的EJB对Spring POJO进行单元测试

时间:2012-01-10 02:33:32

标签: java spring ejb-3.0 junit4

我不确定这是否可行,但我正在尝试针对已注入EJB的Spring POJO进行Spring Junit测试。当我运行测试时,我总是在我的测试POJO中对注入的EJB获得nullpointerexception。问题是POJO的方法不期望EJB接口作为方法参数,所以当我的POJO通过spring上下文加载时它们需要可用。我在weblogic 10.3容器上使用Spring 2.5和EJB 3.0。我确实将<context:annotation-config/>添加到我的spring上下文文件中。

例如,我有一个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 :(得分:0)

  1. 由于您在非Java EE环境中运行JUnit,因此真正的EJB将无法使用。
  2. 您需要做的是添加GreetingManager的存根实现,比如GreetingManagerStub,并测试您的业务逻辑。

答案 1 :(得分:0)

我不确定你是否还需要答案,但我写了一篇文章,将EJB注入Spring并在Weblogic容器中测试POJO。您可以阅读here

希望这有帮助。