Reference URL: http://forum.spring.io/forum/spring-projects/container/104173-runwith-componentscan-does-not-work
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.support.AnnotationConfigContextLoader; @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes={AppConfig.class}) public abstract class BaseTestClass extends AbstractJUnit4SpringContextTests { }
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.web.client.RestTemplate; @Configuration @ComponentScan(basePackages = "com.accenture", excludeFilters = @Filter(type = FilterType.ANNOTATION, value = Configuration.class)) public class AppConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }
import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import com.accenture.dataexchange.api.client.DataExchangeClientService; public class AppTest extends BaseTestClass { @Autowired private DataExchangeClientService service; @Test public void test() { System.out.println("hello"); } }
If there is a database operation, please refer to the following configuration
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes={AppConfig.class, DataSourceConfig.class}) @TransactionConfiguration(transactionManager = "txManager") public abstract class BaseTestClass extends AbstractTransactionalJUnit4SpringContextTests { }
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.support.AnnotationConfigContextLoader; @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes={AppConfig.class}) public abstract class BaseTestClass extends AbstractJUnit4SpringContextTests { }
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.web.client.RestTemplate; @Configuration @ComponentScan(basePackages = "com.accenture", excludeFilters = @Filter(type = FilterType.ANNOTATION, value = Configuration.class)) public class AppConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }
import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import com.accenture.dataexchange.api.client.DataExchangeClientService; public class AppTest extends BaseTestClass { @Autowired private DataExchangeClientService service; @Test public void test() { System.out.println("hello"); } }
如果有数据库操作 参照下面的 配置
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes={AppConfig.class, DataSourceConfig.class}) @TransactionConfiguration(transactionManager = "txManager") public abstract class BaseTestClass extends AbstractTransactionalJUnit4SpringContextTests { }