2017-02-21 19 views
5

私は春の起動アプリケーションを持っていますが、それには@Entityクラスと@RepositoryRestResourceのrepositortインターフェイスがあります。今私はそれらのリポジトリを使用して私のデータベースに新しいレコードを追加できることを確認できるいくつかのテストを書いてみたいのですが、私は設定したMySQLデータベースを使いたくないのですが、 H2のように。現時点では私はこれは次のようになり、application.propertiesファイルを持っている:春の起動時に組み込みデータベースを使用する

spring.jpa.hibernate.ddl-auto=create 
spring.datasource.url=jdbc:mysql://localhost:3306/mydb 
spring.datasource.username=root 
spring.datasource.password=qwerty123 

質問:はどのように私はテストのために他のDBを使用するために私のアプリを設定しますか。私は自分のプロジェクトにxmlを持っていません。すべてはアノテーションに基づいています。私は、クラスを@Beanと定義して、DataSourceを作成し、それをテストクラスの@ContextConfiguration注釈とともに使用しようとしましたが、コンテキストをロードできないと言います。

答えて

13

Mavenプロジェクトを使用している場合は、src/test/resourcesapplication.propertiesファイルを追加することができます。たとえば、次のようなコンテンツがあります。

# Create DDL 
spring.jpa.hibernate.ddl-auto=create 

# H2 in local file system allowing other simultaneous connections 
spring.datasource.url=jdbc:h2:~/test;AUTO_SERVER=TRUE 

はまた、あなたは、依存関係(pom.xml)としてH2を含める必要があります。

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.193</version> 
</dependency> 
+0

私はそのように行うならばそれはまだ代わりのMySQL DBを使用しています。テストクラスに関する情報をさらに提供する必要がありますか?これらのプロパティを明示的に定義するアノテーションと 'main'フォルダからのアノテーションはありません。 –

+0

OK、テストクラスの '@PropertySource(" path/to/properties ")'アノテーションを追加しました。 –

2

あなたは春のプロファイルを使用する必要があります - https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles

あなたが「spring.profiles.active =開発」を使用して、アクティブなプロファイルを定義して、あなたの開発プロファイルにH2を含めます。

例ではYAMLを使用していますが、標準プロパティファイルでも同様に動作します。

関連する問題