2016-08-10 15 views
0

新しいSpring Boot 1.4の機能でコードを更新しています。統合テストでは、新しい@DataJpaTest注釈を使用しようとしていました。私は実行したい.sqlファイルに問題があります。統合テストだけのものと、将来の本番データベースのものがあります。spring-boot 1.4の新しい@DataJpaTestとapplication.propertiesとの関係

私のインテグレーションテストでは、/src/test/resourcesディレクトリ内の.sqlファイルとそのためのH2インメモリデータベースを使用して、@Sql注釈を使用しています。私はmysqlデータベースを使っていますが、data-mysql.sqlというファイルが/src/main/resourcesの中にあります。

インテグレーションテストを実行すると、/src/test/resourcesのファイルのみが実行されていることがわかりましたが、data-mysql.sqlのファイルも実行されています。

これは正常な動作ですか?これを簡単に変更できますか?

サンプルコード:任意の助け

spring.jpa.hibernate.use-new-id-generator-mappings=true 
spring.datasource.url=jdbc:mysql://localhost/prod 
spring.datasource.username=root 
spring.datasource.password=*** 
spring.datasource.initialize=true 
spring.datasource.platform=mysql 

ありがとう:

@RunWith(SpringRunner.class) 
@DataJpaTest 
@Sql("/test-data.sql") 
public class CdrIntegrationTest { 
    // any tests here 
} 

そして、私の "生産" のconfigsは、これらのものです。

答えて

0

"プロダクション"の設定は、application.propertiesにあるのでしょうか?デフォルトでは、SpringRunnerと@DataJpaTestを使用してテストを実行すると、application.propertiesをロードするApplicationContextがまだブートストラップされているため、テスト中にdata- {platform} .sqlファイルをロードしようとします。このドキュメントでは、検査対象のプロパティの順序について説明します。http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html #1は@TestPropertySourceを使用しています。したがって、src/test/resourcesにh2-test.propertiesファイルを作成し、spring.datasource.platformに特に注意を払ってデータソースプロパティを定義することができます。

+0

はい、プロダクション設定はapplication.propertiesファイル内にあります。私が理解していないのは、それがH2データベースのテスト用にロードされた場合、なぜdata-mysql.sqlファイルをロードするのかです。 spring.datasource.platformオプションのために、私はそれを取り除こうとしましたが、データmysql.sqlは統合テストやアプリケーションの起動のどちらでも実行されません。私は@TestPropertySourceを見ましたが、アプリケーションの開始時に統合テストで実行されるいくつかのSQLスクリプトと、アプリケーション起動時に他の設定を持つような設定が多かったようです。 –

関連する問題