JUnit:如何测试删除实体的方法(JPA)

mos*_*iek 1 java hibernate jpa spring-data spring-data-jpa

我有简单的 CRUD 存储库:

public interface BookRepository extends CrudRepository<Book, Long> {
    @Modifying
    @Transactional
    void deleteById(Long id);
}
Run Code Online (Sandbox Code Playgroud)

如何编写简单的 JUnit 测试来检查此方法是否正常工作?当然,在这种情况下,我有实体Book

m.a*_*icz 5

你不应该。

Spring Data 存储库的单元测试是 Spring Data 开发人员的一个问题 - 作为开发人员,您正在使用他们的 API,它应该可以工作,仅此而已。关心你的逻辑而不是库 - 专注于集成测试

无论如何,如果你真的想这样做 - 我会做的是模拟EntityManager并以某种方式将其注入到Repository实现中(听起来像是可怕的任务),或者我会使用DBUnit测试,准备测试数据并简单地检查对象是否被删除(这将是首选方式)