我是Spring Boot的新手,我使用IntelliJ IDEA 2022.3.3创建了Hello World REST API(Ultimate Edition)+ maven和一个集成测试来命中hello结束点。测试正确通过,但调试没有命中Rest-controller中的hello结束点。我不想模拟任何东西。我从测试本身开始调试。为什么调试点在hello中()方法没有命中,即使它给出了正确的返回值。它与任何调试器设置有关吗?我已经在github上上传了完整的项目
https://github.com/codecompilelink/HelloWorld.git
package example.com.helloworld;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IAmController {
@GetMapping("/hello")
public String hello()
{
System.out.println("Hello there...hello I got hit but not in the debugger");
return "Hello World";
}
}
测试类如下所示
package example.com.helloworld;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.web.client.RestTemplate;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HttpResponseTest {
@LocalServerPort
int port;
private static RestTemplate restTemplate;
@BeforeAll
public static void init() {
restTemplate = new RestTemplate();
}
@Test
public void shouldPassIfStringMatches()
{
String result = restTemplate.getForObject("http://localhost:"+port+"/hello",String.class);
assertEquals("Hello World", result);
}
}
**更新:**我能够通过使用eclipse IDE进行排序,控制器中的断点与运行测试的线程不同。Eclipse做得很好,我使用的上面提到的IntelliJ版本不会在测试方法中从下一行到下一行时遇到控制器hello()方法中的断点,并填充结果变量(跳过hello()方法断点)
restTemplate.getForObject("http://localhost:"+port+"/hello",String.class);
如果我不走过去,而是按下Go,那么它会碰到控制器中的hello()中的断点。
1条答案
按热度按时间8ehkhllq1#
问题可能是由this IntelliJ IDEA bug引起的。