Groovy Spock BlockingVariable никогда не выпускается - PullRequest
0 голосов
/ 25 сентября 2018

Я участвую в проигрышной битве против юнит-тестов Спока в моем приложении Grails.Я хочу протестировать асинхронное поведение, и для того, чтобы познакомиться со BlockingVariable Споком, я написал этот простой пример теста.

void "test a cool function of my app I will not tell you about"() {
    given:
    def waitCondition = new BlockingVariable(10000)
    def runner = new Runnable() {
        @Override
        void run() {
            Thread.sleep(5000)
            waitCondition.set(true)
        }
    }

    when:
    new Thread(runner)

    then:
    true == waitCondition.get()
}

К сожалению, это нехорошо, потому что в противном случае это закончится.Когда я устанавливаю точку останова на Thread.sleep() и отлаживаю тест, эта точка останова никогда не срабатывает.Чего мне не хватает?

1 Ответ

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

Ваш тест не пройден, потому что вы на самом деле не запускаете созданный вами поток.Вместо этого:

when:
new Thread(runner)

вы должны выполнить:

when:
new Thread(runner).run()

, и тогда ваш тест пройдет примерно через 5 секунд.

...