2015-07-10 1 views
3

Я пишу модульный тест Спока и я получаю следующее сообщение об ошибке выдается, когда я пытаюсь поставить поставщика данных динамически с помощью заводной сбораСпок модульного тестирования, заводной задание leftshift бросает SpockExecutionException: поставщик данных не имеет данных

SpockExecutionException: Data provider has no data 

Вот простейший случай, я могу обеспечить, что бросает ошибку:

import spock.lang.Shared 
import spock.lang.Specification 

class SampleTest extends Specification { 

    @Shared 
    def someArray 

    void setup() { 
     someArray = ['a','b','c'] 
    } 

    def "ensure that 'Data provider has no data' is not thrown"() { 

     expect: 
     columnA == columnB 

     where: 
     [columnA, columnB] << someArray.collect { value -> [value, value] } 
    } 
} 

Отлич- код, кажется, работает. Вот мой тест на отличной консоли:

def someArray = ['a','b','c'] 
def test = someArray.collect { value -> [value, value] } 
println test 

[[a, a], [b, b], [c, c]] 

Что я недопонимаю?

Я использую:

  • заводной версия 2.2.1
  • Спока версия 0,7-заводной-2,0
  • JUnit версия 4,12

ответ

5

Используйте setupSpec() вместо setup() для доступа к переменной @Shared так, как вы хотите, как указано в @Shared documentation. Кроме того, вы можете также инициализировать общую переменную во время ее объявления.

import spock.lang.* 

class SampleTest extends Specification { 

    @Shared someArray 

    // This is similar to just using 
    // @Shared someArray = ['a','b','c'] 
    // Use above instead of setupSpec() if required 
    // setupSpec() is invoked before any test case is invoked 
    void setupSpec() { 
     someArray = ['a','b','c'] 
    } 

    def "ensure that 'Data provider has no data' is not thrown"() { 
     expect: 
     columnA == columnB 

     where: 
     [columnA, columnB] << someArray.collect { [it, it] } 
    } 
} 
+1

Большое спасибо @dmahapatro. Я очень благодарен за быстрый ответ. Я добавил ссылку на документацию для общей аннотации, ответ был прямо там, если только я прочитал его. :) –

+0

Спасибо и не проблема. Спок (и Groovy вообще) никогда не перестает развлекаться. :) – dmahapatro