170 похожих чатов

Где вы храните интеграционные тесты в спринг приложении? Вместе с

юнит тестами? И как наполняете embedded базу - в одном месте всю, или в каждом тесте отдельно?

6 ответов

15 просмотров

посмотрел в паре проектов, в одном проекте лежат вместе с юнит-тестами, в другом выделены в отдельный модуль - так сразу и не скажешь что лучше. По поводу БД точно также есть про и контра, с одной стороны сгенерить один раз бд и прогнать все тесты - тесты будут выполнятся быстрее, но зато появляется риск взаимного влияния тестов через данные в бд. Тема раскрыта в книге https://ru.scribd.com/doc/240943920/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-xUnit-pdf

Зависит от кол-ва тестов, для микросервиса можно все вместе, для монолита - придется разделять, там тесты могут и часами идти. База синглтон паттерн, каждый тест независимый.

Павел- Автор вопроса
Dima
Зависит от кол-ва тестов, для микросервиса можно в...

Про базу синглтон и независимые тесты не совсем понял. Вот у меня например embedded mongo. При старте тестов поднимается и работает пока все тесты не пройдут. Если я заинсерчу в каком -то тесте что-то, то в другом тесте это появиться. Выглядит что есть пара решений 1. На каждый тест поднимать заново базу - так себе вариант 2. Заполнить базу всеми данными при старте - но потом инсерты делиты все равно будут ее менять 3. В каждом тесте откатывать изминения. Заинсертил, после прохожления теста сделал делит.

Павел
Про базу синглтон и независимые тесты не совсем по...

Синглтон-контейнер - 1 база на все тесты Тесты независимы, у тебя есть @BeforeEach/@AfterEach, тут подчищаешь.

Павел- Автор вопроса
Dima
Синглтон-контейнер - 1 база на все тесты Тесты не...

Да, выглядит что надо подчищать, так честнее всего. Хотя тестируются еще и метды очистки посути

Павел
Про базу синглтон и независимые тесты не совсем по...

1. Рабочий вариант, если база быстро поднимается. 2. Вот тут есть риск что 5-й тест как-то неправильно поломает данные, которые потом будет использовать 37-ой тест. 37-й упадёт и вы будете долго искать почему он упал. 3. Вполне рабочий. Есть такой приём - при старте теста открыть транзакцию, в конце абортировать -база вернется в исходное состояние. Применить можно не всегда - зависит от логики вашего приложения.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта