在调试测试时,使用DatabaseManager连接到内存Hsql(高超音速)数据库

时间:2012-07-11 15:05:34

标签: java debugging intellij-idea hsqldb

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

我按照this answer的建议尝试过,但每次我这样做时,DatabaseManager进程/线程(我不知道哪个)都会启动并冻结。如果kill / force退出它,调试会话也会死掉。

如果没有DatabaseManager冻结,我怎么能这样做?

3 个答案:

答案 0 :(得分:8)

您的Spring / JUnit正在以in-process模式启动数据库。

您的选择是:

  1. 在服务器模式下启动hsqldb
  2. 或者从您的应用程序启动DBmanager
  3. 或者让断点仅停止当前线程,然后数据库管理器不会冻结

答案 1 :(得分:4)

还请检查断点是否会停止所有线程。大多数调试器都有此设置。您可以更改此断点的此设置以仅停止JUnit测试。另见:

Does a breakpoint halt all threads?

答案 2 :(得分:2)

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

  1. Eugenio Cuevas在评论中给出的答案,如果您想在测试的单独进程/线程中启动DatabaseManager。
  2. 如果您在进程内模式下运行,则在其中一个测试中添加对DatabaseManager.main()的调用。确保在调用DatabaseManager.main()的行之后暂停执行(即,提示用户输入),以便测试不会继续执行。有关启动DatabaseManager的代码,请参阅here