我在使用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());
}
}
我做错了什么?
答案 0 :(得分:0)
我创建了一个项目并将文件复制到其中,它对我有用。
我猜测的唯一原因是您的ProjectRepository
类与您指定为组件扫描的RepositoryPackage
属性的basePackageClasses
类不在同一个包中。 (如果ProjectRepository
位于RepositoryPackage
所在的包内的包中,也应该没问题。)
我已将该项目发布到GitHub,但它使用的是Gradle而不是Maven。
现在another one,这次是使用Maven。