Запустите тесты Спока в общем контексте весны - PullRequest
0 голосов
/ 03 сентября 2018

Я использую Spock framework для запуска моих тестов. Каждый тестовый класс имеет надписью Spring @ContextConfiguration над ним. Как я вижу, контекст создается для каждого тестового класса, и для запуска пары десятков тестов в разных классах требуется много времени. Есть ли способ настроить тестовые классы Спока для работы в общем контексте весны?

Ответы [ 2 ]

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

Возможный подход, который будет работать: создать несколько классов с тестами. Например, A, B, C, D. Создайте наследование, например: D -> C -> B -> A. Запустите тесты в D, при этом все тесты из A, B, C, D будут выполнены в общем контексте пружины.

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

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

Дело не в споке, а в весне.

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

В качестве первого средства убедитесь, что атрибут 'местоположения' @ContextConfiguration одинаков.

Кроме того, можно воспользоваться аннотацией @ContextHierarchy.

Это средство кеширования довольно хрупкое, но работает.

Может быть, имеет смысл создать общую спецификацию со всей аннотацией и наследовать от нее:

@ContextConfiguration(locations = ...)
// or maybe
@ContextHierarchy (...)
public abstract class MyCommonSpec extends Specification {
}

// and not in tests:

public class MyTest1 extends MyCommonSpec {
   ...
}

public class MyTest2 extends MyCommonSpec {
   ...
}

Вот ссылка на очень актуальное обсуждение

...