У меня есть этот пример сценария, который выглядит следующим образом:
@Stepwise
class RandomTest extends GebReportingSpec {
@Shared
Random random = new Random()
def tag = random.nextInt(999)+1
def setupSpec() {
new File('/ProgramData/geb.properties').withInputStream {
properties.load(it)
}
}
def "Random Test"(){
when:
println("Random1: ${tag}")
println("Random2: ${tag}")
then:
Thread.sleep(1000)
}
def "Random test2"(){
when:
println("Random3: ${tag}")
then:
Thread.sleep(1000)
}
}
В этом примере Random1 и Random 2 печатают одно и то же число, но Random 3 печатает другое число.
например, это мой вывод, когда я запускаю код:
Random1: 528
Random2: 528
Random3: 285
Я предполагаю, что это потому, что переменные общего доступа переоцениваются между методами объектов.Я попытался переместить эти объявления переменных за пределы аннотации @Shared
, но безрезультатно.
Я хочу, чтобы переменная тега генерировалась в начале спецификации, и я хочу, чтобы она сохранила своюзначение, но я не уверен, как бы я настроить глобальные переменные для этого.мне нужно создать экземпляр переменных внутри setupSpec?