2017-11-28 28 views
0

MyService에는 @javax.ejb.Singleton이 붙어 있습니다.CDI : 단위 테스트에서 javax.ejb.Singleton의 인스턴스가 두 개 나오는 이유는 무엇입니까?

@Singleton 
public class MyService() { 
    .. 
} 

단위 테스트 (Arquillian)는 아래 실패 (1, 2) @ApplicationScoped 콩 합격 제조에

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

@Test 
public void singletonScopedTest() { 

    // 1 
    assertEquals(myService1, myService2); 

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

동일한 시험을 적용했다.

질문

테스트가 @Singleton 실패하지만 @ApplicationScoped에 대한 통과 이유는 무엇입니까?

답변

1

EJB 용으로 @Injected 인 객체는 프록시이지만 객체 인스턴스 자체는 아닙니다.

단위 테스트에서 프록시 개체를 비교하고 있습니다.

+0

올바른 것으로 표시. 감사합니다. –

+0

그냥'@ ApplicationScoped'도 프록시를 사용합니다. – Siliarus