我如何获得运行功能的方法?我想用不同的数据集准备数据库。应使用以下注释定义此数据集:
@PrepareDB("dataset1")
def "feature 1"() {
}
并且应该在设置方法中使用,如下所示:
def setup() {
def dataset = currentTestMethod.getAnnotation().value //pseudo method
prepareDB(dataset)
}
我对JUnit4做了同样的事情。我使用@Rule获取当前方法名称并获得每次反射的注释值。我怎么能在spock中做到这一点?
更新: 我自己找到了解决方案。使用JUnit4中的TestWatcher,可以获得当前运行的测试方法的注释:
@Rule
public TestRule watcher = new TestWatcher() {
protected void starting(Description description) {
println description.getAnnotation(PrepareDB.class).value()
};
};
答案 0 :(得分:1)
我建议将数据库逻辑实现为注释驱动的Spock扩展或JUnit规则,这两者都可以轻松访问已执行要素方法的注释。
要回答您的问题,要从安装方法获取注释,您将使用(从Spock 0.7开始)specificationContext.iterationInfo.parent.featureMethod.reflection.getAnnotation(PrepareDB)
。在Spock 1.0-SNAPSHOT及更高版本中,它已更改为specificationContext.currentFeature.featureMethod.getAnnotation(PrepareDB)
。