spring-boot - 在没有 Spring Boot Application 主类的项目中测试 Spring Data Repository

标签 spring-boot spring-data-jpa testng

我有一个不包含运行 Spring Boot 应用程序的类的小项目。在那个类中,我只有一些配置和一些存储库。我想在小项目中测试这些存储库。

为此,我有以下几点:

@SpringBootTest
@DataJpaTest
public class TaskRepositoryTest extends AbstractTestNGSpringContextTests {

    @Autowired
    private TaskRepository taskRepository;

    @Test
    public void test() {
        taskRepository.save(new Task("open"));
    }
}

但我收到以下错误
Caused by: java.lang.NoSuchMethodError: org.springframework.boot.jdbc.DataSourceBuilder.findType(Ljava/lang/ClassLoader;)Ljava/lang/Class;

知道我必须做什么吗?

最佳答案

这适用于 Spring Boot 2.0.3、H2 和最新的 RELEASE testng:

@EnableAutoConfiguration
@ContextConfiguration(classes = TaskRepository.class)
@DataJpaTest
public class TaskTest extends AbstractTestNGSpringContextTests {

   @Autowired
   private TaskRepository taskRepository;

   @Test
   public void test() {
      taskRepository.save(new Task("open"));
   }

}

乐:

在之前版本的答案中,我使用了 @SpringBootTest @DataJpaTest但这似乎是错误的做法。
将出现以下消息:

[main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [one.adf.springwithoutapp.TaskTest], using SpringBootContextLoader



使用 @ContextConfiguration@DataJpaTest删除该警告并且 IntelliJ 不会标记模拟 taskRepository因为无法 Autowiring 。未找到“TaskRepository”类型的 bean。

关于spring-boot - 在没有 Spring Boot Application 主类的项目中测试 Spring Data Repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50231209/

相关文章:

java - JPA 生成的 SQL 为 "fetch first ? rows only"失败,在 Oracle 11g 中出现 ORA-00933

java - 在 Spring 框架中,从数据库中获取保存的实体以与修改后的未保存实体进行比较

java - 如何多次运行 TestNG 套件

java - 在 TestNG 中使用 @BeforeMethod 时有没有办法获取方法元数据?

java - Redis:为使用@Cacheable 注释的方法设置不同的生存时间

java - 如何使用 Junit 和 Mockito 对 REST Controller 进行单元测试?

hibernate - 如何在 Spring Boot 2 中创建数据源?

java - IS NOT NULL 总是返回真 JPA 查询

java - TestNG:并行线程运行类安全吗?

spring-boot - 配置 spring-boot-starter-oauth2-client 以使用 Azure AD 进行身份验证