Spring Bootを使用してSpring Webプロジェクトを作成しました。テストに関する実践を理解したいと思います。私はメモリに埋め込まれたデータベースが必要で、最初のschema.sqlを使用するjunitsにはhsqlまたはh2と言います。メインアプリケーションでは、データベースはmysqlまたはOracleとすることができます
Spring Boot以外のプロジェクトでは、通常、webアプリケーションによって参照される個別のapplicationcontext.xmlがあり、テストにはapplicationContext-text.xmlを使用します。
今、Spring Bootではすべてが自動的に作成され、Spring Bootも使用されます。 Junits用の埋め込みインメモリdbと、アプリケーション用のMySQLなどの外部dbを設定するにはどうすればよいですか。
私が考えることができる1つの解決策は、プロフィールを使用することです。 2つのプロパティファイルapplication.propertiesおよびapplication-test.propertiesを使用します。そして、私のjunitsのテストプロファイルを使用します。
私が取るべきアプローチに関する推奨事項。
実際、プロファイルは推奨されるアプローチです。私が行うことは、おそらくインメモリ実装を「デフォルト」プロファイルにすることです(実際のデータを変更しないという意味では無害なので、誰かが実際のデータベースに対して誤って実行した場合に備えて、デフォルトにすることをお勧めします) )。個人的には、すべての外部設定を1つのapplication.yml
ファイル、しかしそれはあなた次第です。外部構成では、有効なドライバークラスとURLを指定する必要があります。
spring:
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:mem:test;MODE=PostgreSQL
schema: classpath:/schema.sql
---
spring:
profiles: local
datasource:
url: jdbc:postgresql://localhost/test
username: root
password: changeme
driverClassName: org.postgresql.Driver
schema:
(H2にはpostgres互換モードがあるため、本番環境でのpostgresを補完するものとして、これは本当に素晴らしいものです。)