使用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
传递
答案 0 :(得分:1)
@Injected for EJBs的对象是代理,而不是对象实例本身。
您的单元测试正在比较代理对象。