gpt4 book ai didi

java - 在其他测试中重用测试类

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

我想做一些相互之间有特定依赖关系的测试。因为这,我有一个“主要”测试,它应该调用其他测试。下面是两个示例类:

@Stepwise
public class TestClass extends GebReportingSpec{
NotAutomaticExecutedIT test = new NotAutomaticExecutedIT();

def "anderen Test aufrufen"() {
given:
test."test"()
when:
def wert = true
then:
wert == true

}

}

@Ignore
public class NotAutomaticExecutedIT extends GebReportingSpec {

def "test"() {
given:
def trueness = true;
when:
def argument = true;
then:
argument != trueness;
}
}

如果我运行测试,我会得到以下异常:

groovy.lang.MissingFieldException: No such field: $spock_sharedField__browser for class: org.codehaus.groovy.runtime.NullObject at geb.spock.GebSpec.getBrowser(GebSpec.groovy:40) at geb.spock.GebSpec.methodMissing(GebSpec.groovy:54) at org.gkl.kms.webapp.tests.BestellungenIT.anderen Test aufrufen(TestClass.groovy:16)

这不是可以吗?

最佳答案

错误是因为您调用的字段 test 不是静态的,并且没有用 @Shared 注释。即使您添加了 @Shared 注释,我也不能 100% 确定您尝试执行的操作是否有效。

我要做的是将通用测试逻辑移至辅助函数。这些函数不使用 spock when/then block ,而是简单地使用 assert。将这些辅助函数放入一个父类(super class)中,并让所有将使用它的规范扩展该类。然后你可以这样做:

public class AutomaticSpec extends BaseSpec{

def "This is a test"(){
when:
def x = some value
then:
super.helperFunction(x) //super not needed here, just for clarity
}
}

和基本规范:

public class BaseSpec extends GebReportingSpec{
def helperFunction(x){
assert x == some condition
true
}
}

通过此设置,您应该能够在多个测试中使用通用逻辑。

编辑:助手应该使用 assert 而不是在失败时返回 false,以保持 spock 的奇特错误报告。

关于java - 在其他测试中重用测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420750/

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