2017-10-11 156 views
-1

我重构春季启动测试创建封装类与普通行为,将在其他测试注入。这些类仅在测试包中有作用域。春季测试Utils自动布线

Spring忽略了不会在测试中使用的切片(这很好,并且通过设计spring引导测试1.5),但是也忽略了src/test/java中的任何@Component。

问题是如何配置弹簧启动测试来拾取组件test/java

我有一个不完整的解决方案,对于一个测试工作 我目前的解决办法是:

import com.example.testClasses.TestUtil; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
@Import(TestConfiguration.class) 
public class ExampleTest { 

    @SpyBean 
    private ServiceDependency1 service1; 

    @Autowired 
    private TestUtil testUtil; 

} 

@Configuration 
@ComponentScan(basePackages = "com.example.testClasses") 
public class TestConfiguration { 



} 

@Component 
public class TestUtil { 

    public TestUtil(ServiceDependency1 service) { 
    } 
} 

上述部分作品的解决方案,当另一个utils的加入TestUtils2不同注射的依赖,这种依赖关系都没有解决。

这是因为TestUtil1的依赖只能通过@SpyBean来解决,在第二个测试中不是这样。

回答

0

我把所有SpyBeanTestConfiguration和使用@Autowired为每个测试。

import com.example.testClasses.TestUtil; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
@Import(TestConfiguration.class) 
public class ExampleTest { 

    @Autowired 
    private ServiceDependency1 service1; 

    @Autowired 
    private TestUtil testUtil; 

} 

@Configuration 
@ComponentScan(basePackages = "com.example.testClasses") 
public class TestConfiguration { 

    @SpyBean 
    private ServiceDependency1 service1 

    @SpyBean 
    private ServiceDependency2 service2 

} 

@Component 
public class TestUtil { 

    public TestUtil(ServiceDependency1 service) { 
    } 
}