私は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")
を持っていたために