パッケージ レイアウトのスプリング ブート アプリケーションのサンプルがあります。
main:
-com.foo
Application.java
-com.foo.services
ItemService.java
ItemRepository.java
-com.foo.config
Configuration.java
test:
-com.foo.services
ItemServiceIngegrationTest.java
統合テストの実行に失敗し、置かれた場合に ItemRepository Bean を見つけることができません
@ComponentScan(basePackageClasses = { ItemService.class })
しかし、私が置くと動作します
@ComponentScan(basePackageClasses = { Application.class })
トリックはどこですか?
仕様は言う:
basePackageClasses() または basePackages() (またはその別名 value()) を指定して、スキャンする特定のパッケージを定義できます。特定のパッケージが定義されていない場合、このアノテーションを宣言するクラスのパッケージからスキャンが行われます。
@EnableAutoConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Configuration.class })
public class ItemServiceIntegrationTest {
. . .
}
@org.springframework.context.annotation.Configuration
@PropertySource("classpath:application.properties")
@ComponentScan(basePackageClasses = { ItemService.class })
public class Configuration extends AbstractMongoConfiguration {
. . .
}