Есть некоторые незначительные ошибки, которые я предлагаю переписать более «спок» -y-способом:
- в споке вы должны использовать
def setupSpec()
метод фиксации, а не @BeforeClass
- , если вы хотите инициализировать переменную в
setupSpec
, которая действительно будет запускаться только один раз для всех тестовых случаев, которые вы должны поместить в поле @Shared
.
Но тогда, даже если код будет выглядеть так:
trait SampleTrait {
@Shared List arr
def setupSpec() {
arr = [1,2,3]
}
}
Он все равно не работает. Похоже, вы столкнулись с открытой проблемой в споке:
https://github.com/spockframework/spock/issues/83
Проблема открыта, но обходной путь существует и предлагается в обсуждение: вставьте слово stati c (вы действительно это сделали :)). Причина: @Shared
аннотация не может быть обработана Споком, когда они появляются в чертах.
Итак, в целом, я считаю, лучшее, что вы можете получить, это:
trait SampleTrait {
static List arr
def setupSpec() {
arr = [1,2,3]
}
}
class SampleTestSpec extends Specification implements SampleTrait {
def "list equality"() {
expect:
arr == [1,2,3]
}
}