2016-10-30 24 views
0

私はSpring BootでWebアプリケーションを開発します。私は、Webレイヤーの単体テストに問題があります。 これらのテストでは、注釈@WebMvcTestを使用しています。問題は私の主な構成クラスには、外部プロパティファイルへのパスを含むjava argを持つ@PropertySourceが含まれています。私のユニットWebテストを開始すると、このjava argを解析できないというエラーが発生します(もちろん、私のテストの設定を実行するためのargですが、Webユニットテストではこのファイルは必要ありません)。SpringBootでのPropertySourceの除外WebMvcTestまたはその他のWebMvcTest用アプリケーションコンテキスト

私のメイン設定クラス:

@SpringBootApplication 
@PropertySource(value = {"${pathto.configfile}"}) 
@EnableAspectJAutoProxy 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 

私の最初のソリューションは、"!test"プロファイルに個別の設定クラスを作成し、それに@PropertySource("..")を再配置することでした。そして、私のユニットテストに@ActiveProfiles("test")

私の第二の構成クラスを追加します。ユニットのWebテストのために

@Configuration 
@Profile({"!test"}) 
@PropertySource(value = {"${pathto.configfile}"}) 
public class PropertyConfiguration { 

} 

は、このソリューションは非常に良い作品。しかし、新しい問題は私のWebアプリの起動時に現れます。私の外部プロパティファイルには というプロパティーspring.profiles.activeがあります。このプロパティにはdbまたはfileという値が割り当てられます。その値に応じて、リポジトリの適切な実装が作成され、サービスレイヤに注入されます。値がdbの場合、アプリは正常に開始されますが、 ですが、値がfileの場合はエラーがスローされます:NoSuchBeanDefinitionException

私は戻って(第二の構成ファイルなし)私の以前のバージョンに来るとき、アプリは両方のケースでは良い始まり(ただし、ウェブユニットテスト)

だから、してくださいを説明し、spring.profiles.active=dbの値は、アプリが良い始まり理由しかし、spring.profiles.active=fileが失敗したとき - そして私は自分の仕事をどのように解決することができますか? ウェブユニットテストに他のアプリケーションコンテキストを追加する方法を見つけようとしましたが、見つかりませんでした。 任意のアイデア?:)私のデータベースリポジトリ私は春データJPAを使用していますので、私はこれらのリポジトリの実装を作成していないが、私は私のファイル リポジトリの実装を作成し、私の実装は@Profile("file")を持っていたために

答えて

0

。この注釈を実装から削除した後、この注釈はインターフェイス上でのみリーブされました。私はなぜ1つのconfigクラスがうまくいったのか分からないが、2つのクラスはそうではなかった。しかし問題は解決される)

関連する問題