2016-09-21 39 views
-1

我有一個SpringBootApplication我想測試。內存H2數據庫,插入不工作在SpringBootTest

下面是詳細信息我的文件

application.properties

PRODUCT_DATABASE_PASSWORD= 
PRODUCT_DATABASE_USERNAME=sa 
PRODUCT_DATABASE_CONNECTION_URL=jdbc:h2:file:./target/db/testdb 
PRODUCT_DATABASE_DRIVER=org.h2.Driver 

RED_SHIFT_DATABASE_PASSWORD= 
RED_SHIFT_DATABASE_USERNAME=sa 
RED_SHIFT_DATABASE_CONNECTION_URL=jdbc:h2:file:./target/db/testdb 
RED_SHIFT_DATABASE_DRIVER=org.h2.Driver 
spring.datasource.platform=h2 

ConfigurationClass

@SpringBootConfiguration 
@SpringBootApplication 
@Import({ProductDataAccessConfig.class, RedShiftDataAccessConfig.class}) 
public class TestConfig { 

} 

主測試類

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes = {TestConfig.class,ConfigFileApplicationContextInitializer.class}, webEnvironment = SpringBootTest.WebEnvironment.NONE) 
    public class MainTest { 


@Autowired(required = true) 
@Qualifier("dataSourceRedShift") 
private DataSource dataSource; 
@Test 
public void testHourlyBlock() throws Exception { 
    insertDataIntoDb(); //data sucessfully inserted 
    SpringApplication.run(Application.class, new String[]{}); //No data found 

    } 
} 

數據訪問在Application.class;

try (Connection conn = dataSourceRedShift.getConnection(); 
      Statement stmt = conn.createStatement() { 
//access inserted data 

} 

請幫助! PS對於spring啓動應用程序來說,測試bean正在被選中,所以bean實例化絕對不是問題。我想我錯過了一些屬性。

我沒有在我的應用程序中使用hibernate,即使在相同的應用程序上下文(子上下文)中數據也會關閉。即我運行一個彈簧啓動應用程序,它讀取先前插入的數據

+0

在測試中,默認情況下更改會回滾,您是否禁用事務回滾? –

+0

我沒有使用任何事務管理器。 是否默認配置? 在每次查詢都沒有幫助之後,我確實嘗試了connection.commit! – user1615664

+0

您可以參考thie [docs](http://docs.spring.io/spring/docs/4.3.2.RELEASE/spring-framework-reference/htmlsingle/#testcontext-tx-enabling-transactions) –

回答

0

問題已解決。 從application.properties中刪除spring.datasource.platform = h2。 使我的h2數據持續存在。 但我仍想知道h2是如何自動啓動的?