使用Spring和mongodb进行JUnit测试:无法自动装配存储库

时间:2016-04-19 18:59:10

标签: spring mongodb spring-data junit4 spring-mongo

我在使用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 个答案:

答案 0 :(得分:0)

我创建了一个项目并将文件复制到其中,它对我有用。

我猜测的唯一原因是您的ProjectRepository类与您指定为组件扫描的RepositoryPackage属性的basePackageClasses类不在同一个包中。 (如果ProjectRepository位于RepositoryPackage所在的包内的包中,也应该没问题。)

我已将该项目发布到GitHub,但它使用的是Gradle而不是Maven。

现在another one,这次是使用Maven。