Можно ли написать интеграционный тест springboot 2 jpa для полного тестирования через контроллер покоя? - PullRequest
0 голосов
/ 02 октября 2019

Я хотел бы написать интеграционный тест, который принимает повторные запросы и обрабатывает их с помощью JPA

  1. Создать запись в базе данных h2
  2. Проверить, что запись может быть получена черезrestful service (из базы данных h2)

Как я могу провести интеграционное тестирование всего приложения через конечные точки restful службы, разрешая JPA CRUD базу данных h2?

Что-то похожее на следующее: (бесстыдноукрадено и изменено у mkyong).

Я уверен, что другие, должно быть, уже обдумали это и либо делают это, либо имеют лучший подход, либо причину нет.

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
@DataJpaTest // This breaks
public class BookRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private BookRepository repository;

    @Test
    public void testFindByName() {

        entityManager.persist(new Book("C++"));

        List<Book> books = repository.findByName("C++");
        assertEquals(1, books.size());

        assertThat(books).extracting(Book::getName).containsOnly("C++");

    }

}
java.lang.IllegalStateException: 
Configuration error: found multiple declarations of @BootstrapWith for test class 
[com.mkyong.BookRepositoryTest]: [
@org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.context.SpringBootTestContextBootstrapper)
, 
@org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper)
]

1 Ответ

0 голосов
/ 04 октября 2019

Если это обязательная функция, рассматривали ли вы использование Selenium Webdriver? Он использует реальное приложение и базу данных, поэтому не нужно беспокоиться об использовании H2.

...