2017-06-08 25 views
0

給定一個名爲「md-core」的Spring應用程序運行器和一個PostgresDbConfig以將其連接到數據庫的Spring引導gradle模塊。Spring集成測試模塊從單獨的模塊運行應用程序,無需DB配置屬性

該應用程序運行良好,並解析了@Config中「application.yml」文件的屬性。

@Value("${db.default.pool.size}") 
Integer maxPoolSize; 

現在,一個名爲「integrationtests」的單獨模塊嘗試在「md-core」模塊中啓動Spring Boot Runner。

@ContextConfiguration(classes = {MdCore.class}) 
@RunWith(SpringJUnit4ClassRunner.class) 
public class GivenTest 

測試啓動「MD-核心」春亞軍,但試圖解決在@Config屬性時,它沒有找到任何屬性。

我試着直接解析測試中的「application.yml」。它不會將屬性發送到「md-core」模塊。在測試中添加「application.yml」屬性的任何嘗試都會將它們解析爲測試文件,但在訪問「md-core」模塊時不會發送它們。

是否有任何應該在測試中通過註釋或gradle構建文件給出的定義?

啓動測試時的類路徑不包含「md-core」資源位置,僅包含類。

這可能是一個原因嗎?如果是的話,資源如何在Gradle構建文件的類路徑中被引用?

對於任何錯誤或不完整的信息,我表示歉意,這篇文章是在一個工作日結束時寫的,希望早上有答案。

回答

0

鑑於這種情況,該解決方案使用application.properties文件集成測試是簡單相加的初始化= ConfigFileApplicationContextInitializer.class@ContextConfiguration註解測試類:

@ContextConfiguration(
    initializers = ConfigFileApplicationContextInitializer.class, 
    classes = {SomeApp.class}) 
@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
public class SomeIntegrationTest { 

    @Test 
    public void testTheIntegration() { 
    // some integration tests here 
    } 
} 

回答也記錄在a post on my blog,最初發現another stackoverflow question不太詳細。

相關問題