Java Spring引导-单元测试Spring数据JPA存储库

Java Spring引导-单元测试Spring数据JPA存储库,java,spring-boot,junit,spring-data,Java,Spring Boot,Junit,Spring Data,我在Spring数据的帮助下创建了一个存储库(比如MovieRepository) public interface MovieRepository extends JpaRepository<Movie, Short> {} 我应该测试这个方法吗?没有理由为存储库编写单元测试,因为您自己并没有编写任何实现代码。如果要测试查询,最好编写集成测试。这些都是通过使用内存中的数据库来完成的,测试应该在Spring容器中运行。Spring Boot对集成测试有很多支持: 测试应该使用

我在Spring数据的帮助下创建了一个存储库(比如MovieRepository)

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

我应该测试这个方法吗?

没有理由为存储库编写单元测试,因为您自己并没有编写任何实现代码。如果要测试查询,最好编写集成测试。这些都是通过使用内存中的数据库来完成的,测试应该在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));
       ...
   }
}
@RunWith(SpringRunner.class)
@DataJpaTest
公共类电影定位测试{
@自动连线
私人电影收藏库;
@试验
public void findRelatedMoviesTovieByIDTest()公共无效{
...
Page movies=myRepository.findRelatedMoviesToMovieByIdTest(1,新页面请求(1,10));
...
}
}

值得一提的是,有时建议不要使用内存中的数据库,而是使用真实数据库的实例(当然,出于测试目的)。我的意思是,这不是必须遵守的规则。
@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));
       ...
   }
}