Тестирование репозитория данных Spring в проекте без основного класса Spring Boot Application - PullRequest
0 голосов
/ 08 мая 2018

У меня небольшой проект, в котором нет класса для запуска Spring Boot Application. В этом классе у меня есть только некоторые настройки и несколько репозиториев. Я хотел бы протестировать эти репозитории внутри небольшого проекта.

Для этого у меня есть следующее:

@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;

Есть идеи, что мне делать?

1 Ответ

0 голосов
/ 08 июля 2018

Это работает для меня с Spring Boot 2.0.3, H2 и последней версией RELEASE:

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

   @Autowired
   private TaskRepository taskRepository;

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

}

LE

В предыдущей версии ответа я использовал @SpringBootTest @DataJpaTest, но это неправильный способ сделать это. Появится следующее сообщение:

[main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - не найдено ни @ContextConfiguration, ни @ContextHierarchy для тестового класса [one.adf.springwithoutapp.TaskTest], используя SpringBootContextLoader

Использование @ContextConfiguration с @DataJpaTest удаляет это предупреждение, и IntelliJ не помечает смоделированный taskRepository как Не удалось выполнить автоматическое подключение. Бины типа TaskRepository не найдены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...