【发布时间】:2015-02-18 21:42:08
【问题描述】:
我正在使用 Spock 为 Java 应用程序编写测试。该测试包括一个 JMockit MockUp 用于该类。在调试测试(使用 IntelliJ)时,我希望能够进入 Java 代码。我意识到使用F5 进入代码是行不通的,因为所有带有反射的Groovy 魔法都在进行。不幸的是,即使我在Java代码中设置了一个断点,它仍然不会被命中,即使它贯穿了代码。
这是要测试的代码:
public class TestClass {
private static void initializeProperties() {
// Code that will not run during test
}
public static boolean getValue() {
return true; // <=== BREAK POINT SET HERE WILL NEVER BE HIT
}
}
这里是测试代码:
class TestClassSpec extends Specification {
void setup() {
new MockUp<TestClass>() {
@Mock
public static void initializeProperties() {}
}
}
void "run test"() {
when:
boolean result = TestClass.getValue()
then:
result == true
}
}
测试通过,一切正常,但我无法调试 Java 代码。
注意:如果我不使用 JMockit MockUp,我可以调试,但这是在我的生产代码中测试 private static 方法所必需的。
关于如何让调试器在使用 JMockit 的 Spock 测试中停止在 Java 代码中的任何想法?
【问题讨论】: