Spock:“setup”方法从何而来?
Spock: where does method `setup` come from?
我知道设置规范(测试 class)和功能(测试方法)的方法分别是 setupSpec
和 setup
...
我不太确定相应的 "tear down" 方法是什么,所以我想我会查找它。原来这些分别是 cleanupSpec
和 cleanup
,如记录 here.
但我还查阅了 Spock 1.2 API Java文档。不仅发现上述4种方法中的none是spock.lang.Specification
的一种方法,而且查找这个Javadoc的索引我也没有找到任何参考。
显然 Spock 是 Groovy 而不是 Java,所以这也许可以用一些 Groovy 魔法来解释。任何人都可以解释这些方法来自哪里?
有趣的是,我实际上找不到 Spock 1.2 API Java 在线文档到 link 到。我从 Gradle.
下载的源 .jar 编译了我的
我试图在 spock 源代码中找到答案,我发现它使用 GroovyClassVisitor 来查找和执行此方法。
快速分解发生的事情:
Indentifiers.java class 包含常量,如方法名称(第 58 行)和包含所有 "fixture method names" 的集合(第 72 行)
SpecParser.java GroovyClassVisitor 解析所有规范,并尝试查找夹具方法并构建 FixtureMethods(第 131 行的方法 buildFixtureMethod)
我知道设置规范(测试 class)和功能(测试方法)的方法分别是 setupSpec
和 setup
...
我不太确定相应的 "tear down" 方法是什么,所以我想我会查找它。原来这些分别是 cleanupSpec
和 cleanup
,如记录 here.
但我还查阅了 Spock 1.2 API Java文档。不仅发现上述4种方法中的none是spock.lang.Specification
的一种方法,而且查找这个Javadoc的索引我也没有找到任何参考。
显然 Spock 是 Groovy 而不是 Java,所以这也许可以用一些 Groovy 魔法来解释。任何人都可以解释这些方法来自哪里?
有趣的是,我实际上找不到 Spock 1.2 API Java 在线文档到 link 到。我从 Gradle.
下载的源 .jar 编译了我的我试图在 spock 源代码中找到答案,我发现它使用 GroovyClassVisitor 来查找和执行此方法。
快速分解发生的事情:
Indentifiers.java class 包含常量,如方法名称(第 58 行)和包含所有 "fixture method names" 的集合(第 72 行)
SpecParser.java GroovyClassVisitor 解析所有规范,并尝试查找夹具方法并构建 FixtureMethods(第 131 行的方法 buildFixtureMethod)