2017-07-07 34 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實現 - 我會對你很有用! –

相關問題