Как вы устанавливаете глобальные переменные, которые не переоцениваются между функциональными методами - PullRequest
0 голосов
/ 25 октября 2018

У меня есть этот пример сценария, который выглядит следующим образом:

@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?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

@Shared переменные не переоцениваются между тестами.Причина вашего наблюдения в том, что вы выводите не @Shared переменную tag.random.nextInt(999)+1 оценивается перед каждым методом тестирования.

Если вы установите @Shared на tag, значение не изменится.

0 голосов
/ 25 октября 2018

Похоже, что удаление varaible изнутри спецификации установки - вот что работает:

@Shared
def tag
def setupSpec() {
    new File('/ProgramData/geb.properties').withInputStream {
        properties.load(it)
    }
    Random random = new Random()
    tag = random.nextInt(999)+1
}

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)
}
...