29

Spring Boot を使用して Spring Web プロジェクトを作成しました。テストに関する慣行を理解したい。初期のschema.sqlを使用するjunitには、hsqlまたはh2などのインメモリ組み込みデータベースが必要です。メインアプリケーションでは、データベースは mysql または oracle と言うことができます

Spring Boot 以外のプロジェクトでは、通常、Web アプリによって参照される別の applicationcontext.xml があり、テストには applicationContext-text.xml を使用します。

さて、Spring ブートではすべてが自動的に作成され、Spring Boot も操作されます。Junits 用の埋め込みインメモリ データベースと、アプリケーション用の MySQL のような外部データベースをセットアップする方法を知りたいです。

私が考えることができる 1 つの解決策は、プロファイルを使用することです。2 つのプロパティ ファイル application.properties と application-test.properties を使用します。私のjunitsにテストプロファイルを使用します。

私が取るべきアプローチに関する推奨事項。

4

1 に答える 1

41

実際、プロファイルは推奨されるアプローチです。私がすることは、おそらくインメモリ実装を「デフォルト」プロファイルにすることです(実際のデータを変更しないという意味では無害です。したがって、誰かが誤って実際のデータベースに対して実行した場合に備えて、それをデフォルトにすることをお勧めします)。個人的には、すべての外部構成を 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 を補完するものとして非常に優れています。)

于 2013-11-04T14:16:45.130 に答える