如何使用 junit 为 JPA REST API 编写测试用例?

Posted

技术标签:

【中文标题】如何使用 junit 为 JPA REST API 编写测试用例?【英文标题】:How to write test cases using junit for JPA REST API? 【发布时间】:2017-01-20 10:36:21 【问题描述】:

我想为我的 RESTful API 网络服务编写 junit 测试用例,以检查来自 DB 的响应和预期响应。 这里的基本流程是 REST 文件(调用)-> BusinessLogic(从数据库中获取结果)-> REST 文件(返回)

这是我的 REST 文件:

@Path("add")
@Stateless
public class AddingREST 

@Inject
private AddBO addBO;

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("success/n1/n2")
public List addREST(@PathParam("id") int n1, @PathParam("id") int n2) 
    return addBO.add(n1, n2);

这里是业务逻辑文件:

@Stateless
public class AddBO 

@PersistenceContext(unitName = "WebApplicationPU")
private EntityManager entityManager;

public List add(int n1, int n2) 
    int n3 = entityManager.createNamedQuery("SELECT no from no_table").getResultList();
    List numbers = new ArrayList<int>();
    numbers.add(n1);
    numbers.add(n2);
    numbers.add(n3);
    numbers.add(n1+n2+n3);
    return numbers;

这里的问题是如何在测试用例中为 n3 提供从 DB 获取的值,因为实际代码位于我不想清理的不同数据库中。所以基本上,测试用例将在不同的空数据库上运行,在运行数据库时,我必须在测试用例执行后插入数据并清理数据库。

我该如何进行呢?我应该使用 DBUnit 来插入和清理数据吗?

【问题讨论】:

【参考方案1】:

是的,dbUnit 非常适合使用 JPA 进行数据库准备。

【讨论】:

以上是关于如何使用 junit 为 JPA REST API 编写测试用例?的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟JPA Repository以使用它与Junit进行测试?

在Spring Boot Data JPA Rest API中使用PostgreSql时,表未找到错误

JPA Spring Boot Hibernate Rest API:为啥Hibernate在插入之前会删除?

使用 JPA 和 JUnit 测试时如何一致地擦除内存数据库中的 H2 [重复]

如何为 Rest 模板编写 Mockito Junit 测试用例?

Spring Boot JPA 元模型不能为空!尝试运行 JUnit / 集成测试时