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

如何通过SpringBootTest调试Spring Boot应用程序

童子明
2023-03-14
@RunWith(SpringRunner.class)
@SpringBootTest(classes = NewBusinessRevitalizationApplication.class, 
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(properties = {"management.port=0"})
public class NBRControllerTest extends TestCase {

    @LocalServerPort
    private int port;

    @Value("${local.management.port}")
    private int mgt;

    @Autowired
    private TestRestTemplate testRestTemplate;

    @Test
    public void getApplicationByAgencyIdAndStatusTest() {
        String uri = "http://localhost:" + this.port + "/nbr-services/applications/{status}?agencyIds=123456,56765,678576";
        Map<String, String> vars = new HashMap<String, String>();
        vars.put("status", "SAVED");
        ResponseEntity<String> response = testRestTemplate.getForEntity(uri, String.class, vars);
        assertEquals(HttpStatus.OK, response.getStatusCode());
    }
}
@RestController
@RequestMapping("/nbr-services")
public class NBRController {

    @Autowired
    private NBRServices nbrServices;

    private static Logger logger = LoggerFactory.getLogger(NBRController.class);

    @RequestMapping(value = "/configuration/environment/{environment}", method = RequestMethod.GET)
    @ResponseBody
    public String getConfiguration(@PathVariable("environment") String environment) throws RemoteException {
        logger.debug("environment={}", environment);
        String result = nbrServices.getConfiguration(environment);
        return result;
    }
}

共有1个答案

越狐若
2023-03-14

当我意外地有两个控制器方法具有相同的路径映射时,我就发生了这种情况。

调试的其他备选方案:

通过不使用拆分的webEnvironment,而是使用spring MockMVC对控制器进行直接方法调用而不是http调用来调试系统是可能的。

@SpringBootTest(
   webEnvironment = SpringBootTest.WebEnvironment.MOCK // this is the default
)
@AutoConfigureMockMvc
class MyTest {

  @Autowired
  private MockMvc mockMvc;

  @Test public void myTest() {
     mockMvc.perform("/mypath");
     // ...
  }
}
    null
 类似资料:
  • 我想在intellij Idea中以调试模式启动spring-boot maven应用程序,但当我创建断点时,应用程序不会挂起,而是会继续。我读了很多题目,但还是不明白怎么做。你能帮我决定最好的行动方案吗。 但是当请求LocalHost:5005/MyPage时,我会出现错误101(NET::ERR_CONNECTION_RESET)。似乎有些maven参数没有指定。 下面是我在pom.xml中的

  • 问题内容: 如何调试Node.js服务器应用程序? 现在,我主要使用带有以下打印语句的 警报调试 : 必须有更好的调试方法。我知道GoogleChrome浏览器有一个命令行调试器。该调试器也可用于Node.js吗? 问题答案: 节点检查器可以节省一天!从支持WebSocket的任何浏览器中使用它。断点,事件探查器,实时编码等,这真的很棒。 通过以下方式安装: 然后运行:

  • 我在spring应用程序上工作,需要逐步通过一个控制器方法,看看它是如何工作的。我在eclipse中工作,并使用命令构建我的应用程序。 如何在调试模式下运行它?

  • 问题是Netbeans的默认配置无法在调试模式下正确启动Spring,并且当您在internet上搜索时,您只能在Spring文档中找到过时的信息,而这些信息将不起作用。 如果你知道怎么做,解决方法很简单。请在下面找到正确的设置说明。

  • 我想在另一个Flux流中间调用Mono,向mono发送Flux参数。我正在使用SpringBoot的WebClient。 我试过这个: 但是,如何将第一个API调用的返回发送给param2?然后得到双方的回应?第一个API返回许多值,对于每个值,我需要调用第二个API。 谢谢

  • 问题内容: 我正在开发spring app,需要逐步执行控制器方法以了解其工作方式。我正在日食中工作,并使用命令构建我的应用程序。 如何在调试模式下运行它? 我试过了,但这只是调试日志,不是调试模式 我试过了-这给了我关于任务的信息,我看到了选项,但是当我运行 应用程序无法启动 问题答案: 运行应用程序后,应用程序将被挂起,直到将调试器连接到正在侦听的端口(端口5005)。