gpt4 book ai didi

java - Spock 有测试事件监听器吗

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:08 25 4
gpt4 key购买 nike

Spock 是否有任何测试事件监听器,就像 TestNg 有 ITestListener 一样。 ?

这样我就可以访问,当测试用例失败等时

最佳答案

Spock 确实有听众。不幸的是,官方文档在Writing Custom Extensions 下有“TODO”:http://spockframework.github.io/spock/docs/1.0/extensions.html .

更新:官方文档已更新,包含有关自定义扩展的有用信息:http://spockframework.org/spock/docs/1.1/extensions.html .有关更多详细信息,请参阅这些内容。

有两种方式:Annotation-basedGlobal

基于注释

此处分为三部分:注释、扩展和监听器。

注释:

    import java.lang.annotation.*
import org.spockframework.runtime.extension.ExtensionAnnotation

@Retention(RetentionPolicy.RUNTIME)
@Target([ElementType.TYPE, ElementType.METHOD])
@ExtensionAnnotation(ListenForErrorsExtension)
@interface ListenForErrors {}

扩展(更新):

    import org.spockframework.runtime.extension.AbstractAnnotationDrivenExtension
import org.spockframework.runtime.model.SpecInfo

class ListenForErrorsExtension extends AbstractAnnotationDrivenExtension<ListenForErrors> {
void visitSpec(SpecInfo spec) {
spec.addListener(new ListenForErrorsListener())
}

@Override
void visitSpecAnnotation(ListenForErrors annotation, SpecInfo spec){
println "do whatever you need here if you do. This method will throw an error unless you override it"
}
}

听众:

    import org.spockframework.runtime.AbstractRunListener
import org.spockframework.runtime.model.ErrorInfo

class ListenForErrorsListener extends AbstractRunListener {
void error(ErrorInfo error) {
println "Test failed: ${error.method.name}"
// Do other handling here
}
}

然后您可以在 Spec 类或方法上使用您的新注释:

    @ListenForErrors
class MySpec extends Specification {
...
}

全局

这也包含三个部分:扩展、监听器和注册。

    class ListenForErrorsExtension implements IGlobalExtension {
void visitSpec(SpecInfo specInfo) {
specInfo.addListener(new ListenForErrorsListener())
}
}

您可以使用与上面相同的 ListenForErrorsListener 类。

要注册扩展,请在 META-INF/services 目录中创建一个名为 org.spockframework.runtime.extension.IGlobalExtension 的文件。如果使用 Gradle/Maven,这将在 src/test/resources 下。此文件应仅包含全局扩展的完全限定类名,例如:

com.example.tests.ListenForErrorsExtension

引用资料

例如,请在此处查看 Spock 内置扩展: https://github.com/spockframework/spock/tree/groovy-1.8/spock-core/src/main/java/spock/lang https://github.com/spockframework/spock/tree/groovy-1.8/spock-core/src/main/java/org/spockframework/runtime/extension/builtin

关于java - Spock 有测试事件监听器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25967241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com