接口测试中使用JpaRepository做数据库层校验
Posted 测码奔跑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试中使用JpaRepository做数据库层校验相关的知识,希望对你有一定的参考价值。
背景
接口测试脚本中,对于数据库内容的校验一直比较麻烦。
石器时代 定义数据源,创建JdbcTemplate,然后直接拼接SQL来查询。通用性很差。
工业革命 使用mybatis,定义数据源,定义domain,定义sql映射的xml文件,定义具体操作的DAO层。搭建起来很费时间,后期也经常需要维护。
现代化 用spring-data-jpa,简简单单继承JpaRepository,遵循spring data的规范定义查询接口,无需写实现类就可使用,大大减少数据访问层(DAO)的开发量。
实践
完整的介绍一下使用JpaRepository的过程。
第一步
首先定义表结构对应的PO,以下图这张表为例。
定义TestPO,注意通过注解的方式,把表名、字段名设置下。
@Data@Entity@Table(name = "test")
public class TestPO {
@Id
@GeneratedValue
private Long id;
@Column(name = "task_id")
private Long taskId;
@Column(name = "type")
private Integer type;
@Column(name = "result")
private String result;
@Column(name = "success")
private Boolean success;
@Column(name = "gmt_create")
@CreatedDate
private Date gmtCreate;
@Column(name = "gmt_modified")
@LastModifiedDate
private Date gmtModified;
}
第二步
这里是最重要的一步:定义具体的查询接口。只需要继承JpaRepository就可。
public interface TestRepository extends JpaRepository<TestPO, Long> {
}
可以看到JpaRepository中只提供了一些简单的操作,并不满足我们的需求。
就如开头所说的,JpaRepository的强大在于只要遵循spring data的规范把数据查询的接口定义出来就可使用,无需写实现类。spring data的规范参考。按照Spring Data的规范的规范,查询方法以find | read | get 开头,涉及查询条件时,条件的属性用条件关键字连接,要注意的是条件属性以首字母大写。
以testPO为例,常用的需求是根据taskId来查询多条testPO记录来校验。
根据taskId来查询所有testPO记录
public List<TestPO> findByTaskId(Long taskId);
有时候,我们只需要最新的那条记录,则可以这么写
public TestPO findFirstByTaskIdOrderByGmtCreateDesc(Long taskId);
YY下,我们需要多个条件同时满足来查询
public List<TestPO> findByTaskIdAndType(Long taskId,Integer type);
用法非常多,直接上一份前辈的总结
第三步
大头都做完了,剩下的就是定义datasource和创建实例了。
定义datasource,根据各自的数据库环境来定义。
创建实例:
@Configuration
@EntityScan(basePackageClasses = TestPO.class)
@EnableJpaRepositories(basePackageClasses = TestRepository.class)
public class JPAConfig {
@Autowired
public DataSource testDataSource;
}
第四步
剩下的就是具体的使用,以一个单测为例。
@Resource
private TestRepository testRepository;
@Test
public void test2(){
TestPO one = testRepository.findFirstByTaskIdOrderByGmtCreateDesc(183988004431071L);
System.out.println(one.getType());
}
更多测试技术文章,微信扫以下二维码,欢迎关注
测码奔跑-让测试技术奔跑起来
以上是关于接口测试中使用JpaRepository做数据库层校验的主要内容,如果未能解决你的问题,请参考以下文章
当监视调用 save 方法的 JPARepository 时返回 null
Spring Boot JpaRepository 保存调用似乎没有做任何事情
springData__jpa对数据库进行操作---dao接口和 测试类