为什么春天不会自动测试我的测试?

时间:2014-02-12 15:52:53

标签: spring autowired

我有以下弹簧配置(实际上,配置更广泛,但我已经包含了相关部分):

testApplicationContext.xml

<!-- Business -->
<import resource="contexts/testBusinessContext.xml" />    

<!-- Dao -->
<import resource="contexts/testDaoContext.xml" />    

<!-- Persistence configuration -->
<import resource="contexts/testPersistenceContext.xml" />    

<!-- Service actions -->
<import resource="contexts/testServiceActionContext.xml" />

testBusinessContext.xml

<bean id="basketBusiness" class="com.company.salesdataservice.business.BasketBusiness">
    <property name="basketDao" ref="basketDao" />
    <property name="tokenDao" ref="tokenDao" />
    <property name="houseDao" ref="houseDao" />
    <property name="currencyDao" ref="currencyDao" />
</bean>

testDaoContext.xml

<bean id="currencyDao" class="com.company.salesdataservice.dao.CurrencyDao">
    <property name="dataSource" ref="companyDomainDataSource" />
</bean>
<bean id="houseDao" class="com.company.salesdataservice.dao.HouseDao"/>
<bean id="basketDao" class="com.company.salesdataservice.dao.BasketDao">
    <property name="dataSource" ref="companyBookingDataSource" />
</bean>
<bean id="tokenDao" class="com.company.salesdataservice.dao.JavaRandomTokenDao" />

testPersistenceContext.xml

<bean id="companyBookingTransactionManager" class="com.company.utils.data.TransactionManager">
    <property name="manager" ref="companyBookingSpringTransactionManager" />
</bean>

<bean id="companyBookingSpringTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="companyBookingDataSource" />
</bean>

<!-- initialised by a DataSourceInitializer. Left out for brevity. -->
<jdbc:embedded-database id="companyBookingDataSource" type="H2"/>

<!-- initialised by a DataSourceInitializer. Left out for brevity. -->    
<jdbc:embedded-database id="companyDomainDataSource" type="H2"/>

testServiceActionContext.xml

<bean id="createBasketServiceAction" class="com.company.salesdataservice.serviceaction.CreateBasketServiceAction">
    <property name="transactionManager" ref="companyBookingTransactionManager" />
    <property name="basketBusiness" ref="basketBusiness" />
</bean>

我正试图在我的一个测试中自动装载CreateBasketServiceAction类型的字段:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/testApplicationContext.xml"})
public class CreateBasketServiceActionTest {

    @Autowired
    CreateBasketServiceAction createBasketServiceAction;

}

然而,Spring一直告诉我它不能自动装配:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.company.utils.data.serviceaction.TransactionalServiceAction] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.

如果我用BasketBusiness basketBusiness字段替换该字段,那么Spring完全有能力这样做。

据我所知,CreateBasketServiceActionBasketBusiness在XML配置中定义为<bean />

过去几个小时,我一直在撞墙。我做错了什么?

0 个答案:

没有答案
相关问题