Тест JUnit с Spring и mongodb: не удалось автоматически подключить репозиторий
У меня проблемы с написанием теста для Spring и JUnit для тестирования репозитория MongoDB. Сообщение "не удалось автоматически подключить. Не найдено ни одного компонента... типа" Мой репозиторий
public interface ProjectRepository extends MongoRepository<Project, String> {
public Project findByName(String name);
}
в то время как мой файл конфигурации
@Configuration
@EnableMongoRepositories(basePackageClasses = RepositoryPackage.class)
public class SpringMongoConfiguration extends AbstractMongoConfiguration{
@Override
protected String getDatabaseName() {
return "test";
}
@Bean
public MongoClient mongo() throws Exception {
MongoClient client = new MongoClient("localhost");
return client;
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(), getDatabaseName());
}
}
где RepositoryPackage находится в том же пакете хранилища. Мой тест
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringMongoConfiguration.class)
public class MongoDbProjectTests {
@Autowired
private ProjectRepository projectRepository;
@Before
public void init(){
projectRepository.deleteAll();
Project project = new Project("sdfjklgh", 1, "comunione Leonardo",
Project.TYPE_PROJECT_PHOTO, Project.STATE_PROJECT_DRAFT);
projectRepository.save(project);
}
@Test
public void test1(){
List<Project> list = projectRepository.findAll();
assertEquals(1, list.size());
}
}
Что я делаю неправильно?
1 ответ
Я создал проект и скопировал в него ваши файлы, и он работает для меня.
Единственная причина, по которой я могу догадаться, это то, что ваш ProjectRepository
класс не в той же упаковке, что и ваш RepositoryPackage
класс, который вы указываете в качестве basePackageClasses
атрибут для компонентного сканирования. (Это также должно быть хорошо, если ProjectRepository
находится в пакете внутри пакета, который RepositoryPackage
в.)
Я опубликовал проект на GitHub, но он использует Gradle, а не Maven.
А теперь еще один, на этот раз с помощью Maven.