2016-09-09 10 views
1

こんにちは私はコマンドラインからうまく動作するスプリングブートアプリケーションを持っています。しかし、私がide(intellij)から実行すると、http要求ごとに失敗します。私が持っている問題は、ideからテスト用のjar(mavenでテストとしてスコープされている)が私のアプリにあるhk2 jarと衝突していることです。Intellijyのテストジャーを使ったスプリングブート

hk2クラスを陰影付けしてテストジャーから除外することはできません。

もちろん私のテストでも起こります。だから私の質問は、どのように私は春のブートは、テストジャーではなく、生産用の瓶だけをロードすることを保証するのですか?私のテストが正しいバイナリをテストしているのではないかと心配しています。

コンパイルされたアプリケーションを実行する統合テストはソリューションですが、毎回コードを再コンパイルせずにideから実行したいと考えています。

テストジャーは、あなたがtestcontainers' hk2 shaded classesを信頼して喜んでいる場合、あなたは2つのMavenのプロファイル、私はと呼ばれる生産とテストのための1つに1つを定義することができます1.1.5

おかげ

答えて

1

testcontainersのpostgresのですhk2testプロダクションプロファイル(デフォルトで有効化)にはhk2が含まれ、hk2testにはtestcontainersが含まれています。それらは相互に排他的です。

定義2 Mavenは

<profiles> 
    <profile> 
     <id>production</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 

     <dependencies> 
      <dependency> 
       <groupId>org.glassfish.hk2</groupId> 
       <artifactId>hk2</artifactId> 
      </dependency> 
     </dependencies> 

    </profile> 

    <profile> 
     <id>unit test</id> 
     <activation> 
      <property> 
       <name>hk2test</name> 
      </property> 
     </activation> 

     <dependencies> 
      <dependency> 
       <groupId>org.testcontainers</groupId> 
       <artifactId>testcontainers</artifactId> 
       <scope>test</scope> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 

Maven Project視野に入るとhk2testプロファイルを選択し、Intelljからプロファイルを使用するにはのIntelliJ

でのテストプロファイルを有効にプロファイル。

コマンドライン

$ mvn -Dhk2test test 
からテストプロファイルを有効化
関連する問題