2017-07-07 36 views
0

我尝试测试具有注解@DependsOn的单例,其中我标记了之前必须初始化的另一个单例。但在测试中,我不想加载它们,因为它为我的测试提供了许多无用的类。对于前:如何在Arquillian测试中禁用@DependsOn注释?

@Singleton 
@DependsOn({"anotherSingleton1", "anotherSingleton2"...}) 
public class SomeSingleton { 
... methods and logic... 
} 

这里的例子测试:

public class SomeSingletonIT extends Arquillian { 

    @Mock SomeClassInSingleton; 
    ... another mocks... 

    @Inject 
    @InjectMocks 
    SomeSingleton instance; 

    @BeforeClass 
    public void initMocks() { 
     mocks logic 
    } 



    @Deployment 
    public static WebArchive createDeployment() { 

     return ShrinkWrap.create(WebArchive.class, "test.war") 
       .addClasses(
         SomeSingleton.class 
         ) 
       .addAsLibraries(some Libs) 
       .addAsWebInfResource(EmptyAsset.INSTANCE,"beans.xml"); 
    } 

    @Test 
    public void testGetProactiveSubjects() throws Exception { 
     System.out.println("***----------------------------------***"); 
     assertNotNull(instance); 
     ...some assertions... 
     System.out.println("***----------------------------------***"); 
    } 

} 

我得到了的Arquillian并不见注释@DependsOn单身类例外。但是如果我将它们包含在测试存档中 - 我将不得不包括它们的所有依赖关系。并嘲笑他们在@ PostConstruct中的一些逻辑。所以...我如何禁用或模拟@DependsOn? 我使用arquillian与萤火虫管理的容器。

回答

0

我想到的一个想法是实现双测试 - dummy object--您可以在测试部署中替代这个测试,而不是部署真正的单身人士。这将节省您在部署受测试的归档时添加大量依赖项和执行开销。

+0

是的,我只是尝试类似的事情 - 我创建了虚拟单身人士,并根据需要在@DependsOn中命名它们(@Singleton(name =“amotherSingleton1”),并将它们包含到ShrinkWrap存档中。不喜欢当我的项目中有无用的类,就像嘲笑一样创建:)如果有人知道如何通过mockito实现 - 我会对你很有用! –

相关问题