0

我想编写一个集成测试,接受宁静的请求并通过 JPA 处理它们

  1. 在h2数据库中创建一条记录
  2. 验证可以通过 restful 服务(来自 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)
]
4

1 回答 1

0

如果它是必备功能,您是否考虑过使用 Selenium Webdriver?它使用实际的应用程序和数据库,因此无需担心使用 H2。

于 2019-10-03T21:58:04.030 回答