SpringApplication.run()で通常呼び出される@Serviceクラスをテストします。spring-boot @serviceクラスのテスト
サービスクラスは次のとおりです。
@Service
@EnableConfigurationProperties(AppProperties.class)
public class MongoService {
private static final Logger logger = LoggerFactory.getLogger(MongoService.class);
private MongoClient mongoClient;
private final AppProperties properties;
@Autowired
public MongoService(AppProperties properties) {
this.properties = properties;
}
/**
* Open connection
*/
public void openConnection() {
try {
mongoClient = new MongoClient(new MongoClientURI(properties.getMongoConnectionString()));
} catch (Exception e) {
logger.error("Cannot create connection to Search&Browse database", e);
throw new BackendException("Cannot create connection to Search&Browse database");
}
}
}
それはSpringApplication.runで開始コントローラ(によって呼び出された場合)、MongoServiceは、私はそれが働いていないのJUnitからしようとすると、nullではありませんが。
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = AppProperties.class)
public class MongoServiceTest {
private static final Logger logger = LoggerFactory.getLogger(MongoServiceTest.class);
@Autowired
MongoService mongoService;
@Test
public void MongoServiceAutowired() {
assertNotNull(mongoService);
}
}
が、私はこの例外取得しています:
だから、私はこれをしようとしている
org.springframework.beans.factory.UnsatisfiedDependencyException:エラーは、「名前のBeanを作成しmypackage.MongoServiceTest ':mongoServiceフィールドで表現されている満足度の低い依存性。ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionExceptionです: 'mypackage.services.mongo.MongoService'タイプの適格なBeanがありません:autowire候補と見なされる少なくとも1つのbeanが必要です。依存関係の注釈:{@ org.springframework.beans.factory.annotation.Autowired(必須= true)}
手掛かりがありますか?私はどこで失敗しますか?
'@ SpringBootTest'はプロジェクトのルートレベルにある必要がある' @ SpringBootApplication'を探しています(Spring のコンポーネント/設定を再帰的に検索するため)[または@ComponentScan ']。これは本当ですか? – DerM
@ComponentScanを追加しましたが成功しません(jUnitsは/ testフォルダに保存されています) –