Тест 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.

Другие вопросы по тегам