2017-10-11 155 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) { 
    } 
}