2012-02-17 55 views
2

我試圖通過spring bean配置設置模擬對象(使用Mockito),但是我不知道如何爲該對象設置MockSettings。特別是我想建立對象序列化。Mockito - MockSettings with spring

編程方式,可以通過:

Object serializableMock = mock(Object.class, withSettings().serializable()); 
<bean id="object" name="object" class="org.mockito.Mockito" factory-method="mock"> 
    <constructor-arg value="object" /> 
    <constructor-arg value="org.mockito.MockSettings"> ??? </constructor-arg> 
</bean> 

有人可以指導我該怎麼做?在此先感謝

順便說一句:我想使用純XML配置。

回答

1

只能通過XML,你不能。

其實我不會推薦你在春季使用Mockito mock進行測試。這裏的原因:

  • 通常當單元測試,要隔離測試一個類,它畢竟是單元測試,所以Spring DI是完全不必要的,在這種情況下。您可以自己或者通過方便的註釋來注入測試主題的合作者。

  • 如果你需要用DAO等另一個系統來測試數據庫,那麼你可能需要用Spring接線來連接真實的數據庫或者像H2這樣的內存數據庫。但在這種情況下,您正在制定一個集成測試。在這種情況下,你很可能不需要嘲笑。

這就是說,你可能有特定的需求和上面的點可能是你特定界上下文無關。但是,再次,在我看來,如果它是特定的,我不認爲用簡單的MockSettings factory bean(甚至可以配置)來製作自己的技術是過分的。

E.g.你可以在你的應用程序的技術模塊寫這篇一勞永逸:

public class SpringMockSettingsFactoryBean extends AbstractFactoryBean<MockSettings> { 
    @Override public Class<Multimap> getObjectType() { 
     return MockSettings.class; 
    } 

    @Override protected Multimap<String, String> createInstance() throws Exception { 
     // ... your code 

     return mockSettings; 
    } 
} 

有上到位桶項目springockito,試圖有一個集中的Mockito命名空間中的春天。我不認爲該項目可以做到這一點,但框架的作者可能有興趣實施該功能。

希望有所幫助。

0

是的,你可以通過XML做

 


            
 
<bean id="mockSettings" class="org.mockito.Mockito" factory-method="withSettings" init-  method="verboseLogging"> 
 

 
    </bean> 
 
    <bean id="sqsHelper" class="org.mockito.Mockito" factory-method="mock"> 
 
     <constructor-arg value="com.elsevier.vtw.aws.helper.SQSHelper"/> 
 
     <constructor-arg ref="mockSettings" /> 
 

 
    </bean>