当前位置: 首页 > 知识库问答 >
问题:

Spring Boot DBUnit测试获取NoSuchBean定义异常

白刚洁
2023-03-14

我试图创建一个简单的SpringBoot DB单元存储库测试,但我得到了一个:

NoSuchBeanDefinitionException:没有类型为“example”的限定bean。ItemRepository'可用:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我的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/form/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();
    }

}

项目存储库/src/main/Test/example/Configuration/RepositoryTestConfiguration中的我的测试配置

@Configuration
public class RepositoryTestConfiguration {
}

我需要在我的RepositoryTestConfiguration中包含什么才能让它工作?

注意:我将我的存储库保存在我的应用程序类的一个单独模块中,因此我不能在测试配置中引用该类


共有2个答案

萧秋月
2023-03-14

哦,好的,当您使用SpringBoot时,它启用了自动配置。所以只需使用@SpringApplicationConfiguration而不是@ContextConfiguration。

景育
2023-03-14

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

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

在RepositoryTestConfiguration类上,可以自动连接存储库bean

 类似资料:
  • 我有扩张器。js。我在formcontroller中调用此刀。java文件,但我得到以下错误。 我想我需要将DAO定义为一个bean。如何在SpringWebConfig中执行此操作。java文件? 对不起,我对Spring没有太多的控制权 控制台错误: 严重:为servlet[dispatcher]组织分配异常。springframework。豆。工厂NoSuchBeanDefinitionEx

  • 我正在从参考资料中学习spring security。版本3.1.2。释放如中所述,我已经像这样配置了安全性:http security-context.xml web.xml 安全servlet。xml 但我在启动应用程序时遇到了这个异常。如果我删除了安全配置,我的spring web应用程序就会正常工作。我在stackoverflow中也遇到过同样的问题。但运气不好。

  • 我正在尝试探索在测试中添加咆哮通知的功能。这允许在测试执行时将消息添加到屏幕上。 我正在尝试通过以下步骤指定的这种方法:http://elementalselenium.com/tips/53-growl 机器:windows 10 Selenium版本:2.53浏览器:Firefox 49 以下是我正在使用的脚本: 执行此操作时,我收到以下错误: 等待弹出窗口出现..单击弹出窗口..现在等待通知

  • 我在尝试获取数据时收到异常,懒惰(最后异常) //应用程序通过以下DAO获取数据。 //Junit测试调用serviceX.getById //使用JUnit //某个对象类具有以下属性。 当我尝试访问jUnit中的另一个对象时,我得到了以下异常 方法已在额外配置中尝试 我们使用TransactionManager的spring注释。 还有,我尝试添加@ Transaction(Propagati

  • 我是Java Web服务的新手,在过去的4天里我一直在坚持这一点。问题是,我打算创建供其他应用程序使用的web服务。要求web服务必须从一个表返回多条记录,因此我创建了一个示例web服务,下面是代码 界面 具有两个字符串对象的自定义类 这里是实现 使用JBossDeveloperStudio生成的WSDL是 当给出SOAP请求时,我得到强制转换异常[Lcom.org.ccb.test.Sample