2016-12-27 12 views
3

Springブートでリポジトリをテストし、TestEntityManagerをインクルードしてリポジトリが本当に何をすべきかをチェックしたいと考えています。@DataJpaTestを使用してカスタムスキームを設定する

spring.datasource.url=jdbc:h2:mem:testdb;Mode=Oracle;INIT=create schema if not exists testdb\\;SET SCHEMA testdb\\;runscript from 'classpath:create.h2.sql'; 
spring.datasource.username=sa 
spring.datasource.password= 
spring.datasource.platform=h2 
spring.jpa.hibernate.ddl-auto=none 
spring.datasource.continue-on-error=true 

#datasource config 
spring.database.driver-class-name=org.h2.Driver 
spring.database.jndi-name= 
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 
spring.jpa.show-sql=true 
:私はいくつかのテーブル、インデックス、シーケンス、制約付きスキーマを設定application-junit.propertiesファイルを持っている他のJUnitテストのために

@RunWith(SpringRunner.class) 
@DataJpaTest 
public class MyRepositoryTest { 

    @Autowired 
    private TestEntityManager entityManager; 

    @Autowired 
    private MyRepository repository; 

    ... 

:JUnitテストです

DataJpaTestでは、この構成は使用されていないようです。 @ActiveProfiles( "junit")を追加しても。

JUnitテストでcreate.h2.sqlファイルを使用してテーブルを設定するにはどうすればよいですか?事前に

おかげで、 ニーナ

答えて

5

@DataJpaTestyour configured datasource by an in-memory data sourceを置き換えるので、それはないです。

junit特別なプロファイルの場合は明らかですが、これは明らかです。設定したDataSourceを無効にしないようにSpringブートに指示する必要があります。ドキュメントには、上で示したリンクの例があります。基本的に、あなたのテストは次のようになります。

@RunWith(SpringRunner.class) 
@DataJpaTest 
@ActiveProfiles("junit") 
@AutoConfigureTestDatabase(replace=Replace.NONE) 
public class MyRepositoryTest { 
    ... 
} 

あなたは何度も何度もこれを繰り返す必要がないように、あなたは最後の2(3?)の注釈を共有するためにメタアノテーションを作成することを検討すべきです。

関連する問題