CDI:为什么我在单元测试中得到两个javax.ejb.Singleton实例?

时间:2017-11-28 12:37:56

标签: java-ee singleton cdi jboss-arquillian

使用MyService注释了一个@javax.ejb.Singleton课程。

@Singleton
public class MyService() { 
    ..
}

下面的单元测试(Arquillian)失败(1和2):

@Inject private MyService myService1;
@Inject private MyService myService2;

@Test
public void singletonScopedTest() {

    // 1
    assertEquals(myService1, myService2);

    // 2
    assertTrue(myService1== myService2);
}

应用于@ApplicationScoped 生成的 bean的相同测试将通过。

问题

为什么@Singleton测试失败但@ApplicationScoped传递

1 个答案:

答案 0 :(得分:1)

@Injected for EJBs的对象是代理,而不是对象实例本身。

您的单元测试正在比较代理对象。