EJB测试和Arquillian - Struts + JEE6 + EJB3

时间:2015-06-30 20:34:37

标签: java struts ejb-3.0 jboss-arquillian jboss-eap-6

我在一个旧系统中工作,使用Jboss EAP 6.1 + EJB 3 + Struts ......我想为这个系统编写测试...我正在研究Arquillian,但我没有找到任何没有CDI和使用较旧的技术...我想测试这个旧系统,我有EJB,我需要使用容器......

你觉得Arquillian对我来说有用吗? 使用这些技术测试EJB的最佳方法是什么?!

感谢。

2 个答案:

答案 0 :(得分:0)

您可以轻松地自下而上测试系统,而无需使用Arquillian。您可能想要编写三种类型的测试。

  1. 单元测试
  2. 集成测试
  3. 系统测试
  4. 功能测试
  5. 功能测试是手动的。

    您在没有任何容器的情况下编写单元测试,因为您正在方法级别进行测试。

    集成测试可能不会使用任何容器,您可以在某些情况下模拟容器行为:

    @Stateless
    public class Cat {
    
        @PostContruct
        void init() { 
    
            say("Meow");
    
        }
    
        public void say(String output) {
    
            System.out.println(output);
    
        }
    
    }
    

    编写测试很简单:

    String catOutput = "";
    
    @Test public void cat_shouldSayMeow_whenInstantiated {
        Cat cat = new Cat();
        assertEquals("Meow", catOutput);
    }
    
    public class CatInSimulatedContainer extends Cat {
        public CatInSimulatedContainer() {
            super.init(); // <--- the container would run this automatically after injection
        }
    
        @Override
        public void say(String output) {
            this.output = output;
        }
    }
    

    最后,您的系统测试可以使用“真实”容器(在您的JBoss案例中)进行测试。您需要做的就是安装Jenkins并指导他定期运行测试。

    不需要胖乎乎的Arquillian:)

答案 1 :(得分:0)

Arquillian完全支持EJB 3.0。

您可以将EJB注入测试中。 如果您使用的是不支持注入的旧EJB代码,您甚至可以使用初始上下文并在测试中查找EJB。 我一直在使用Arquillian来测试EJB。