0

私はSpring起動で開発されたSpring MVCアプリケーションを持っています。これはアプリケーションですが、ちょうど学習目的のためです。起動時に特定のデータベース上で実行するようにSpring起動アプリケーションを設定する方法

デフォルトでは、アプリはMySQLデータベースを起動して使用します。ユニットテストとインテグレーションテストでは、メモリ内のH2データベースを使用しており、完全に動作します。

だから、私は2つのapplication.propertiesを持っています。 1つは/src/main/resources/application.propertiesです。

spring.datasource.driver-class-name = com.mysql.jdbc.Driver 
spring.datasource.url = jdbc:mysql://localhost/myDatabase 
spring.datasource.username = root 
spring.datasource.password = mysql 

spring.thymeleaf.mode=LEGACYHTML5 
spring.thymeleaf.cache=false 

下/src/test/resources/application.properties

spring.datasource.driver-class-name=org.h2.Driver 
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" 
spring.datasource.username=sa 
spring.datasource.password=sa 

内の他のapplication.properties、「私は、自動化されたWebサイトのテストのためにセレンを使用する必要があり、私はドン私のMySQLデータベースにテストデータが入力されるようにします。

私は春に、以前にこれを行っていないが、私は自分のアプリケーションは次のように働きたい:

  • 起動し、端末から、それは使うべきデータベースを指定する特定のコマンドを使用して、自分のアプリケーションを。 localhostで起動する必要があります:8080
  • そして、localhost:8080ですべてのSeleniumテストを実行します。 Seleniumテストで生成されたすべてのデータは、アプリケーションが実行されている間だけメモリに保持されます。

application.propertiesまたは他の設定を使用してSpringブートアプリケーションでこれを行う方法は?

+0

このアプローチの問題点は何ですか?テストケースを実行しているときは、/src/test/resources/application.propertiesからapplication.propertiesをロードすることができます。 – asg

+0

[this](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html)を読んでいますか? 'java -Dspring.datasource.url = -jar your.jar'アプリケーションを起動するときにシステムプロパティを指定するだけです。または、プロファイル固有のプロパティファイルをインクルードし、起動する前に '-Dspring.profiles.active = 'を使用してください。 –

+0

データベース設定をapplication-mysql.propertiesおよびapplication-h2に入れます。プロパティを開き、-Dspring.profiles.active = mysql(またはh2)を使用してアプリケーションを実行します。 –

答えて

0
  1. 別のプロパティファイルapplication-test.propertiesを作成し、/src/test/resourcesの下に置きます。テストデータベースのプロパティ(またはその他のテスト固有のプロパティ)はここに移動する必要があります。
  2. テストクラスの上に、この注釈@ActiveProfiles("test")を使用してください。

    @ActiveProfiles("test") 
    public class MyTest { 
        ... 
    } 
    
0

春はこれを自動的に行います。春が "test"プロファイルで実行されるため、テストを実行しているときにsrc/test/resourcesからapplication.propertiesを実行する。そうでない場合は、テストクラスに@ActiveProfiles("test")アノテーションを追加します(テスト対象のクラスではなく、テストを行っているクラスを意味します)。それでもうまくいかない場合は、src/test/resources/application.propertiesの名前をsrc/test/resources/application-test.propertiesに変更し、実行コンフィギュレーションでプロファイルを選択することができます( 'profile'というフィールドがあります) )。 Referenceおよびmore info

関連する問題