4

我想在我的IDE(Intellij IDEA 11.1.2)中调试测试时使用hsql DatabaseManager(或swing版本,没关系)连接到内存中的HSQL数据库实例。

我已经按照这个答案的建议进行了尝试,但是每次我这样做时,DatabaseManager 进程/线程(我不知道是哪个)都会在调试断点被命中时启动并冻结。如果 kill/force 退出它,调试会话也会终止。

在不冻结 DatabaseManager 的情况下如何执行此操作?

4

3 回答 3

8

您的 Spring/JUnit 正在以进程内模式启动数据库。

您的选择是:

  1. 在服务器模式下启动 hsqldb
  2. 或从您的应用程序启动 DBmanager
  3. 或者让你的断点只停止当前线程,那么你的数据库管理器就不会冻结
于 2012-07-11T15:26:53.617 回答
4

还请检查您的断点是否停止了所有线程。大多数调试器都有这个设置。您可以将此断点更改为仅暂停 JUnit 测试线程而不暂停其他线程。另请参阅此处:

断点会停止所有线程吗?

于 2012-12-11T15:14:20.853 回答
3

我认为这个问题有两个答案。

  1. 如果您想在与测试不同的进程/线程中启动 DatabaseManager,Eugenio Cuevas 在他的评论中给出了答案。
  2. 如果您在进程内模式下运行,请在其中一个测试中添加对 DatabaseManager.main() 的调用。确保暂停执行(即提示用户输入,或Thread.sleep(Long.MAX_VALUE);在调用 DatabaseManager.main() 的行之后立即运行,这样测试就不会继续执行。有关启动 DatabaseManager 的代码,请参见此处
于 2012-07-11T16:24:43.697 回答