Spring Boot DBUnit测试获取NoSuchBeanDefinitionException

时间:2017-11-02 14:04:41

标签: java spring spring-boot dbunit spring-test-dbunit

我正在尝试创建一个简单的SpringBoot数据库单元存储库测试,但我得到了一个:

  

NoSuchBeanDefinitionException:没有类型的限定bean   'example.ItemRepository'   可用:预计至少有1个符合autowire资格的bean   候选人。依赖注释:   {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}

我的Gradle依赖

compile('org.springframework.boot:spring-boot-starter-data-jpa')
runtime('com.h2database:h2')

testCompile("junit:junit")
testCompile("org.assertj:assertj-core:3.8.0")
testCompile('org.springframework.boot:spring-boot-starter-test')

testCompile("org.dbunit:dbunit:2.4.9")
testCompile("com.github.springtestdbunit:spring-test-dbunit:1.0.0")
item-repository/src/main/java/example/ItemRepository

中的

我的存储库

@Component
public interface ItemRepository extends CrudRepository<Item, Long> {
}
item-repository/src/test/java/example/ItemRepositoryTest

中的

我的资源库测试

@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class,
        TransactionalTestExecutionListener.class, DbUnitTestExecutionListener.class})
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = RepositoryTestConfiguration.class)
@DirtiesContext
public class ItemRepositoryTest {

    @Autowired
    private ItemRepository repository;

    @Test
    @DatabaseSetup("Empty.xml")
    public void save() {
        // Given
        Item item = new Item

        // When
        Item response = repository.save(item);

        // Then
        assertThat(response.getId()).isNotNull();
    }

}
item-repository/src/main/test/example/configuration/RepositoryTestConfiguration

中的

我的测试配置

@Configuration
public class RepositoryTestConfiguration {
}

我需要在RepositoryTestConfiguration中包含哪些内容才能使其发挥作用?

注意:我将我的存储库保存在我的Application类的单独模块中,因此我无法在测试配置中引用该类

2 个答案:

答案 0 :(得分:0)

您必须启用jpa存储库,例如以下注释:

@EnableJpaRepositories(basePackages = {“com.hop.repository”})

在RepositoryTestConfiguration类上,然后您的存储库bean可以自动装配。

答案 1 :(得分:0)

哦,你正在使用弹簧启动,它可以启用自动配置。所以只需使用@SpringApplicationConfiguration而不是@ContextConfiguration。