2016-09-15 7 views
-1

Я использую geb, spock используя groovy, я использую функцию для нескольких блоков в этой функции. Но один блок не работает, чем сразу же выходит из цикла. , например: -Использование нескольких, когда и затем блокировать код, как обрабатывать ошибку

def "test"(){ 
    given: 
     println(" checking 3 nos") 

    when: 
     def a = 5 
     def b = 10 
     def c = 20 
      if (a < b) 
      println("Hi, I'm Pass") 
    then: 
     true 

    when: 
     def a1 = 5 
     def a2 = 10 
     def a3 = 20 
      if (a2 > a3) 
      println("Fail") 
    then: 
    false 

    when: 
     def a11 = 5 
     def a22 = 10 
     def a33 = 20 
      if (a33 > a11) 
      println("Hello, i'm pass") 
    then: 
    true 

Но здесь вновь запускает только Привет, я Pass, но не выполняет третий блок, не возвращает второй блок ответа. Пожалуйста, направляйте меня.

+1

Можете ли вы объяснить лучше? Что значит 'then: true' и' then: false', которые должны были делать? –

+1

Во-вторых, блок выполняет ложь и тест терпит неудачу, что является ожидаемым поведением. Каков ваш ожидаемый результат? – Mamun

+0

Tim_yates, данный, когда и тогда является синтаксисом. Это функция, когда это поток, а затем тип возврата. если во втором блоке не будет продолжения третьего блока. поэтому, как сделать запуск третьего блока, через секунду не удалось. –

ответ

0

Если вы спрашиваете, как вы можете продолжать работать каждый раз, когда/после того, как предыдущий провалится, ответ будет таков, что вы не можете. Один метод тестирования остановит первый сбой. Если вы хотите индивидуальные тесты, используйте несколько методов.

def 'test1'() { 
    when: 
    ... 

    then: 
    ... 
} 

def 'test2'() { 
    when: 
    ... 

    then: 
    ... 
} 
0

Невозможно. Разделите свой код на несколько тестов, когда/затем блокируйте их в каждом из них.

Вы также можете переместить код установки в setupSpec() и setup()