You can use spring profiles for this (link How to install spring profile in package? ) Using
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <beans profile="test"> <context:component-scan base-package="com.main"> <context:exclude-filter expression="com.main.*Controller" type="regex"/> </context:component-scan> </beans> <beans profile="!test"> <context:component-scan base-package="com.main"/> </beans>
and annotating a test with @ActiveProfile("test")
EDIT:
If your xml does not define the <component:scan> , you can control the scanning of packages from your unit test using the java configuration. Then the controllers can be excluded using @ComponentScan excludeFilter as follows:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class) public class HelperTest { @Configuration @ComponentScan(basePackages = "yourPackage", excludeFilters = @ComponentScan.Filter(value = Controller.class, type = FilterType.ANNOTATION)) @ImportResource(locations = "classpath:context.xml") static class TestConfiguration { }
source share