如何为 spring boot 编写 Junit 测试用例:

How to write Junit test case for spring boot:

@RequestMapping("/getSUID/{pid}")
public List<StudyUID> index(@PathVariable("pid") String pid) {
    System.out.println("pid"+pid);
    String nquery=QueriesUtil.getQuery("STUDY_UID_TEST", true);
    nquery=nquery.replace("<:PID>", pid);
    System.out.println(nquery);
    return jdbcTemplate.query(nquery, (rs, rowNum) -> new StudyUID( 
            rs.getInt("PERSON_ID"),
            rs.getString("MODALITY"),
            rs.getString("STUDY_UID"),

如何为它写一个junit测试用例?我试过使用 MockMvc 但仍然面临有关编写 @test 的错误。 有人对我如何使用 JUnit 和 Mockito 实现这一目标有任何建议吗?

非常感谢您!

我在这里看到的一个问题是您的控制器正在执行所有工作 - 获取查询、设置查询、执行查询并返回 API 调用的结果。在一个地方做所有这些事情使得测试变得困难。这也提出了一个问题——你到底想测试什么?您 运行 关注哪些问题?

您可能需要考虑重构它以改用 layered architecture。 API -> 服务层 -> 存储库层。

这可能是一个更清晰的结构,然后您可以独立测试图层:

  1. 检查 API 是否使用正确的参数调用了正确的服务层方法。
  2. 检查服务层是否使用正确的参数调用存储库。
  3. 检查存储库是否创建了正确的查询。

或者,您也可以进行集成测试 - 只需调用 API 并确保返回正确的结果。

此外,请注意在查询中使用字符串替换。而是看看 PreparedStatement (https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html).