【发布时间】:2016-05-12 18:31:09
【问题描述】:
我正在尝试在调试模式下的 WebIntegrationTest 期间访问 H2-Console。但是,我注意到在调试测试时 Spring Boot 阻塞了 H2 控制台。似乎一旦达到断点,H2 控制台也会被阻止。我正在使用 Spring Boot 1.3.1.RELEASE。
以下测试中的每个断点都会导致 H2 控制台阻塞。在断点 1 中,出现登录页面。然后我按下登录按钮,但没有任何反应,直到我让测试继续到下一个断点。在断点 2 中,我已登录并可以执行查询。但只有当我要下一个断点时,才会出现查询结果。
@Test
public void whenGetById_thenCorrectId() throws InterruptedException {
// do some stuff
// breakpoint 1
Thread.sleep(1000);
// breakpoint 2
Thread.sleep(1000);
// breakpoint 3
}
WebIntegrationTest 配置如下:
@ActiveProfiles("local,unittest")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
@WebIntegrationTest({"spring.h2.console.enabled=true", "server.port=8080"})
public class MyResourceTest {
如何将 H2-in-memory DB 与调试模式分离?
【问题讨论】:
-
嗯,你对断点所做的基本上是停止应用程序,直到你继续手动运行。因此,除了不使用断点之外,没有其他方法可以规避这一点。您可以对 H2 使用其他一种存储方法(例如使用文件或服务器模式),然后将单独的 Web 控制台实例连接到该方法。
-
听起来你的断点配置为暂停整个 JVM 而不是一个线程。
-
@René Winkler 看到这个答案:stackoverflow.com/questions/12390116/…
标签: java spring spring-boot