Java 评估时的调试

Java 评估时的调试,java,debugging,jvm,Java,Debugging,Jvm,在计算任意表达式时,例如在IDE计算对话框中,是否可能在断点处停止执行 假设我计算myClass.myMethod(),我在其中设置了一个断点,并且该断点被命中 如果可能的话,我想这是JVM的问题,而不是IDE。有什么想法吗?假设您正在使用Spring。那么你很可能已经接受了整个模式 我正在使用IntelliJ和JUnit,因此要适应您的需要 我在每个IntelliJ模块(层)测试根的根上都有一个基类: /** * An abstract base class that other tests

在计算任意表达式时,例如在IDE计算对话框中,是否可能在断点处停止执行

假设我计算myClass.myMethod(),我在其中设置了一个断点,并且该断点被命中


如果可能的话,我想这是JVM的问题,而不是IDE。有什么想法吗?

假设您正在使用Spring。那么你很可能已经接受了整个模式

我正在使用IntelliJ和JUnit,因此要适应您的需要

我在每个IntelliJ模块(层)测试根的根上都有一个基类:

/**
 * An abstract base class that other tests can inherit from to 
 * get spring functionality.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/spring-config-domain.xml"})
public abstract class SpringAwareTest {
}
然后,您的测试可以简单地将其扩展为“上下文感知”

并在Spring配置文件中导入较低级别的层(无论如何,您都需要在应用程序中执行此操作):


...
现在,你可以设置断点,并逐步进入你的心的内容;所有这些都有一个完整的背景


如果您只是想测试(或逐步测试)一段不需要上下文的代码。然后按照正常值进行测试(不要延长测试)。这会快得多,因为它不需要延迟上下文。当您转向持续集成(如Jenkins等)时,这一点就开始变得重要起来。

这是一个IDE问题,除非您正在编写IDE。如果你正在编写一个IDE,那么你需要知道它在JVM中是如何工作的。你听说过JUnit/TestNG等,对吗?@immibis我不是一个开发IDE的人。哪些IDE提供了这样的功能?这个想法似乎缺乏说服力it@Kong测试框架如何与此相关?不知道哪些IDE允许这样做。
public class NavigationServiceTest extends SpringAwareTest {
    @Autowired private NavigationService service;

    @Test
    public void folders() throws IOException {
        List<Folder> folders = service.getFolders(TestConstants.USER_ID);
        Assert.assertNotNull("Folders is null", folders);
    }
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/spring-config-service.xml"})
public abstract class SpringAwareTest {
}
<import resource="spring-config-dal.xml"/>
<import resource="spring-config-security.xml"/>
...