gpt4 book ai didi

java - 测试类中的 Spock 框架覆盖方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:51 25 4
gpt4 key购买 nike

测试类:

public class ClassForTest {

public String hello(){
return "hello " + getClassName();
}

public String getClassName(){
return ClassForTest.class.getName();
}

}

Spock 类:

    class ClassForSpockTest extends Specification{
def setupSpec(){
ClassForTest.metaClass.getClassName={"ClassForSpockTest"}

}

def "override test"(){
setup:
ClassForTest cft = new ClassForTest()

expect:
cft.getClassName() == "ClassForSpockTest"
}

def "mock test"(){
setup:
ClassForTest cft = new ClassForTest()

expect:
cft.hello() == "hello ClassForSpockTest"
}


}

覆盖测试测试通过!模拟测试崩溃,cft.hello() 返回“hello ClassForTest”

最佳答案

您不能使用元类从该类中的另一个方法覆盖 Java 类中的方法调用。这是 spock、Java 和 groovy 的限制。在这种情况下,您必须使用其他模拟技术。例如,您可以使用子类化:

 setup:
ClassForTest cft = new ClassForTest() {
String getClassName() {"ClassForSpockTest"}
}

关于java - 测试类中的 Spock 框架覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857403/

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