当前位置: 首页 > 知识库问答 >
问题:

测试Spring boot REST资源问题

马俊
2023-03-14

有一个用Spring Boot制作的微服务。它由Jetty、Jersey、Jackson和Liquibase组成。该服务的任务之一是通过REST接收一些数据并返回响应。此操作经过下一个单元:

  • myresource@component包含JAX-RS注释,它接收数据并请求@autowired myservice响应。
  • myservice@component服务,使用@autowired myresource请求其响应。
  • myresource,简单@jparepository接口

这个应用程序工作得很好,但是现在我需要为每个模块添加一些测试。通常我使用Mockito来测试单元,所以我使用mocked MyRepository(Mockito@mock注释+when()方法)来测试我的服务。我想用同样的方法测试MyResource.java。

我尝试使用TestRestTemplate方式使用spring-boot-starter-test进行测试,我的测试类如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebIntegrationTest(randomPort = true)
public class MyResourceTest {
  @Value("${local.server.port}")
  private int port;

  private String getBaseUrl() {
    return "http://localhost:" + port;
  }

  @Test
  public void test() {
    final TestRestTemplate restTemplate = new TestRestTemplate();
    assertEquals(restTemplate.postForEntity(getBaseUrl() + "/test", null, ResponseObject.class).getBody(), new ResponseObject());
  }
}

而且有两个问题。首先--当我的测试运行时,他们运行整个spring应用程序,所以我的liquibase脚本试图查找数据库,这是一个非常长的过程。第二-我不能用Mockito代理替换MyService类。

共有1个答案

杨凯旋
2023-03-14

MockMvc是您的问题的首选解决方案。它运行spring boot应用程序,但“模拟”请求,因此它并不真正运行http而是以http方式运行。您可以使用@AutoWired将应用程序的所有bean注入到测试类中,因此您可以在那里模拟spring bean。

 类似资料:
  • 我试图理解不对任何流调用close()会如何影响系统的性能和功能。为了做到这一点,我创建了下面的测试类。

  • Summary Cross Origin Resource Sharing or CORS is a mechanism that enables a web browser to perform "cross-domain" requests using the XMLHttpRequest L2 API in a controlled manner. In the past, the XMLH

  • 我目前正在开发一个解决方案,该解决方案目前有32个UnitTests。我一直在和resharper测试跑步者一起工作--它工作得很好。所有测试都在运行,所有测试都显示了正确的测试结果。 但是,在使用Visual Studio测试资源管理器时,测试不会运行。 Test Explorer将显示所有单元测试,但是一旦单击“Run all”,所有测试都将变灰,并且不显示测试运行的结果: 所有测试类都是公共

  • 我一直试图在使用 Pax 考试创建的 OSGI 容器中运行 JMH 基准测试(类似于此 SO 答案中描述的方式,但也将 Pax 考试放入其中)。但是,在加载编译期间创建的 JMH 生成的资源文件时遇到了一些问题。 编译完测试后,可以在< code>target/test-classes目录中找到以下内容: 在测试中,我使用了一些代码(我无法更改),这些代码(有效地)查找文件,如下所示: 运行失败(

  • 面试是两个或两个以上的人之间的对话,面试官要求他们提出问题,以便从受访者那里获得事实或陈述。 这是一个有用的教程,收集一组最有用的人力资源面试问题以及如何以机智的方式回答这些问题。 听众 (Audience) 本教程主要面向希望了解在面试中取得成功的基本步骤的年轻人和求职者。 先决条件 (Prerequisites) 在继续学习本教程之前,您应该愿意与我们联系,提出问题并解决有关该主题的任何进一步

  • 问题内容: 当我使用命令:mvn test时,maven使用主要资源而不是src / test / resources中的测试资源。 我如何才能使Maven使用测试资源而不是主要资源? 编辑:我使用Classloader查找我的资源。Classloader可以从我的src / test / resources目录中找到资源,但是它首先在src / main / java中查找该资源。 还是在运行将