【问题标题】:JUnit test with Spring and mongodb: could not autowire repository使用 Spring 和 mongodb 进行 JUnit 测试:无法自动装配存储库
【发布时间】:2016-04-19 18:59:09
【问题描述】:

我在使用 Spring 和 JUnit 编写测试来测试 MongoDB 存储库时遇到问题。消息是“无法自动装配。找不到 ... 类型的 bean” 我的仓库是

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());
}

}

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    现在another one,这次使用 Maven。

    【讨论】:

    • 你能分享你的 pom.xml 吗?
    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 2020-02-09
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2014-03-11
    • 1970-01-01
    相关资源
    最近更新 更多