我想编写一个集成测试,接受宁静的请求并通过 JPA 处理它们
- 在h2数据库中创建一条记录
- 验证可以通过 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)
]