Java 如何在spock中的设置方法中获得该方法?
如何获得运行特性的方法?我想用不同的数据集准备数据库。应使用如下注释定义此数据集:Java 如何在spock中的设置方法中获得该方法?,java,groovy,junit4,spock,Java,Groovy,Junit4,Spock,如何获得运行特性的方法?我想用不同的数据集准备数据库。应使用如下注释定义此数据集: @PrepareDB("dataset1") def "feature 1"() { } def setup() { def dataset = currentTestMethod.getAnnotation().value //pseudo method prepareDB(dataset) } 并应在如下设置方法中使用: @PrepareDB("dataset1") def "featu
@PrepareDB("dataset1")
def "feature 1"() {
}
def setup() {
def dataset = currentTestMethod.getAnnotation().value //pseudo method
prepareDB(dataset)
}
并应在如下设置方法中使用:
@PrepareDB("dataset1")
def "feature 1"() {
}
def setup() {
def dataset = currentTestMethod.getAnnotation().value //pseudo method
prepareDB(dataset)
}
我对JUnit4也这么做了。我使用@Rule获取当前方法名,并获取每个反射的注释值。我怎么能在斯波克做到这一点
更新:
我自己找到了解决办法。使用JUnit4中的TestWatcher,可以为当前运行的测试方法获取注释:
@Rule
public TestRule watcher = new TestWatcher() {
protected void starting(Description description) {
println description.getAnnotation(PrepareDB.class).value()
};
};
我建议将数据库逻辑实现为注释驱动的Spock扩展或JUnit规则,这两种扩展都可以轻松访问已执行的feature方法的注释
为了回答您的问题,要从setup方法获取注释,您可以使用(从Spock 0.7开始)
specificationContext.iterationInfo.parent.featureMethod.reflection.getAnnotation(PrepareDB)
。在Spock 1.0-SNAPSHOT及更高版本中,这已更改为specificationContext.currentFeature.featureMethod.getAnnotation(PrepareDB)
请添加您的答案,而不是更新部分。非常感谢。