Могу ли я заставить Surefire выполнить дорогостоящую настройку / демонтаж только один раз? - PullRequest
1 голос
/ 14 сентября 2011

У меня есть серия модульных тестов, которые все должны общаться с сервером Apache Zookeeper.Очевидно, что если бы у меня была библиотека для поддельных подключений к серверу (или простой способ прокрутить мои собственные), это было бы оптимально, но, насколько я могу судить, на данный момент ничего не существует, и под капотом достаточно движущихся частей, которые я сомневаюсьчтобы попробовать это вручную.

Итак, наше решение до сих пор заключалось в том, чтобы локально установить фиктивный сервер, выполнить тесты, а затем отключить его в конце.Такого рода работы, хотя, насколько я могу судить, нет простого способа заставить Surefire что-то делать один раз за весь тестовый прогон - в лучшем случае у меня есть @BeforeClass и @AfterClass украшения.

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

Есть простойисправить?Я поступаю об этом неправильно?Если есть существующая библиотека mock-zookeeper или простой способ развернуть мою собственную, это тоже прекрасное решение.

Ответы [ 3 ]

3 голосов
/ 14 сентября 2011

Звучит как интеграционный тест. Взгляните на «отказоустойчивый» вместо верного и проделайте дорогостоящую работу на дополнительных этапах жизненного цикла для настройки и демонтажа интеграционных тестов.

1 голос
/ 15 сентября 2011

Если вы используете TestNG , вы можете использовать @ BeforeSuite.

0 голосов
/ 14 сентября 2011

Возможно, вы захотите проверить класс AbstractSingleSpringContextTests в Spring.Этот класс загружает контекст Spring для всех подклассов и перезагружает его, только если вызван метод setDirty().

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

...