繁体   English   中英

Spring Boot-单元测试Spring Data JPA存储库

[英]Spring boot - unit testing Spring Data JPA repositories

我有一个借助Spring Data创建的存储库(例如MovieRepository)。

public interface MovieRepository extends JpaRepository<Movie, Short> {}  

假设我要对示例 getOne(short id)JpaRepository接口提供的方法之一进行单元测试,这有意义吗? 因为我通常不亲自编写任何实现代码。

如果我自己编写一个带有查询的方法,例如:

@Query("SELECT m " +
            "FROM Movie m inner join  MovieGenre mg ON m.id = mg.movie.id " +
            "WHERE mg.genre.id = (SELECT mg2.genre.id FROM MovieGenre mg2 WHERE mg2.movie.id = ?1 AND mg2.movie.id <> mg.movie.id AND mg.genre.id = mg2.genre.id) " +
            "GROUP BY mg.movie.id " +
            "ORDER BY count(m) DESC")
Page<Movie> findRelatedMoviesToMovieById(@Param("id") short id, Pageable pageable);  

我应该测试这种方法吗?

由于您自己没有编写任何实现代码,因此没有理由为存储库编写单元测试。 如果要测试查询,则最好编写集成测试。 这些是通过使用内存数据库完成的,并且测试应在Spring容器内运行。 Spring-Boot对进行集成测试提供了很多支持:

  • 测试应该使用@RunWith(SpringRunner.class)来运行,它会弹出Spring容器;
  • @DataJpaTest这些应该与SpringRunner.class结合使用以运行内存数据库;

例:

@RunWith(SpringRunner.class)
@DataJpaTest
public class MovieRepositoryTests {

   @Autowired
   private MovieRepository myRepository;

   @Test
   public void findRelatedMoviesToMovieByIdTest() {
       ...
       Page<Movie> movies= myRepository.findRelatedMoviesToMovieByIdTest(1, new PageRequest(1, 10));
       ...
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM