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

Jakarta ee CDI:为什么我在单元测试中得到两个javax.ejb.Singleton实例?,jakarta-ee,singleton,cdi,jboss-arquillian,Jakarta Ee,Singleton,Cdi,Jboss Arquillian,获得了一个用@javax.ejb.Singleton注释的类MyService @Singleton 公共类MyService(){ .. } 以下单元测试(Arquillian)失败(1和2): @Inject private MyService MyService 1; @注入私有MyService MyService 2; @试验 public void singletonScopedTest(){ // 1 资产质量(myService1、myService2); // 2 asser

获得了一个用
@javax.ejb.Singleton
注释的类
MyService

@Singleton
公共类MyService(){
..
}
以下单元测试(Arquillian)失败(1和2):

@Inject private MyService MyService 1;
@注入私有MyService MyService 2;
@试验
public void singletonScopedTest(){
// 1
资产质量(myService1、myService2);
// 2
assertTrue(myService1==myService2);
}
应用于
@ApplicationScoped
生产的bean的相同测试将通过

问题


为什么对
@Singleton
测试失败,而对
@ApplicationScoped
测试通过?

为EJB注入的对象是代理,而不是对象实例本身


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

为了记录在案,
@ApplicationScoped
也将使用代理。