Size: a a a

Spring Framework and more

2020 May 11

PD

Plomipu Dmitri in Spring Framework and more
Alexandr Emelyanov
Почему не должны загрузится бины из конфигураций?
чтобы отсечь те бины, которые в тестах тестового класса мне будут не нужны. По сути мне нужен аспект, сервис и его зависимости и всё.
источник

AE

Alexandr Emelyanov in Spring Framework and more
Чел, слушай, у тебя какие то дикие не понимания того что и как должно работать, тут в чате объяснять долго и думаю что бесполезно. Твой путь - проштудировать с десяток примеров из топа Гугла и задать конкретные вопросы сюда
источник

AE

Alexandr Emelyanov in Spring Framework and more
Plomipu Dmitri
чтобы отсечь те бины, которые в тестах тестового класса мне будут не нужны. По сути мне нужен аспект, сервис и его зависимости и всё.
Ты ответь на вопрос, почему все остальное не должно загрузиться? Как объявляешь тест?
источник

PD

Plomipu Dmitri in Spring Framework and more
Alexandr Emelyanov
Ты ответь на вопрос, почему все остальное не должно загрузиться? Как объявляешь тест?
В том-то и дело, что загружается весь контекст абсолютно полностью. Я не понимаю как это предотвратить. Вот пример класса. Это то как тестовый класс сейчас выглядет

@RunWith(SpringRunner.class)
@SpringBootContext(classes={Application.class})
@ActiveProfiles("test")
@TestPropertySource("classpath:test.properties")
public class AspectConfigurationTest {
     @Autowired
     private EmailService emailService;
     @Test
     public void helloWorld() {
          System.out.println(emailService);
     }
}
источник

AE

Alexandr Emelyanov in Spring Framework and more
Вот это поднимает у тебя все приложение полностью. почитай уже как тесты делать
@SpringBootContext(classes={Application.class})
источник

PD

Plomipu Dmitri in Spring Framework and more
вы издеваетесь что ли ?? Я это прекрасно знаю. Дело не в этом, а в том, как частично запустить аппликейшн контекст
источник

PD

Plomipu Dmitri in Spring Framework and more
я не знаю как это сделать. Я нигде не нашёл как сделать выборочную загрузку. Чтобы загрузились сервисы их зависимости и репы. Всё
источник

AE

Alexandr Emelyanov in Spring Framework and more
Plomipu Dmitri
я не знаю как это сделать. Я нигде не нашёл как сделать выборочную загрузку. Чтобы загрузились сервисы их зависимости и репы. Всё
Не указывать рабочий, а написать для теста с нужными бинами и моками
источник

AE

Alexandr Emelyanov in Spring Framework and more
Plomipu Dmitri
вы издеваетесь что ли ?? Я это прекрасно знаю. Дело не в этом, а в том, как частично запустить аппликейшн контекст
Ты сейчас издеваешься надо мной ибо инфы в интернете жопой жуй
источник

PD

Plomipu Dmitri in Spring Framework and more
Alexandr Emelyanov
Ты сейчас издеваешься надо мной ибо инфы в интернете жопой жуй
вот именно. Там написано как можно, а мне нужно знать как именно нужно в моей ситуации
источник

RS

Ruslan Stelmachenko in Spring Framework and more
никто не знает как нужно в какой ситуации. все колхозят что-то, потом выясняются недостатки этого подхода, переделывают, выясняют недостатки нового подхода и так по кругу.

даже сами разработчики спринга не знают. они больше фреймворкописатели, чем его юзатели. но оф доки по тестированию спринг-бут приложений все же прочитать обязательно нужно, т.к. там описаны все способы, а дальше уже по ситуации смотреть, какой из способов для вас в вашей конкретной ситуации - наименьшее зло. и кроме вас это никто не скажет.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
лично я бы не заморачивался с поднятием частичного контекста ради ускорения запуска тестов. я считаю это большим злом, чем альтернатива (запуск полного контекста).

при таком подходе бывает, что в тестах все работает, а в продакшене поднимаете какой-то еще 5-й бин, который каким-то образом влияет на всю систему и меняет поведение, вследствие чего работать перестает.

а это ж не юнит-тесты, для которых это нормально. это интеграционные, и я хочу видеть реальную ситуацию, а не выдуманную (с не полным контекстом).
источник

PD

Plomipu Dmitri in Spring Framework and more
Спасибо Руслан за такой развёрнутый ответ, в котором вы поделились вашим опытом в продакшене. Это то, что я собственно и хотел. Конечно я хотел словестное решение на ТЗ, но то почему частичное поднятие контекста приложения трудноисправимое зло - это очень ценная информация и то, что хотя бы я могу использовать пока я выполняю таски в поте лица не успевая что-то читать конкретное даже офф.доку по спрингу
источник

PD

Plomipu Dmitri in Spring Framework and more
я наверное выбью в граните, что интеграционные тесты - это в большинстве случае эмуляция загрузки приложения в реальной ситуации, т.е. вне тестов. Я просто думал, что есть ситуации, когда нужно ускорять деплой проекта и это хорошо
источник

PD

Plomipu Dmitri in Spring Framework and more
Ещё раз спасибо.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
ситуации есть, но обычно это ситуации, которые в оф доке по тестам называют "ну мы тут конечно поднимаем контекст, но на самом деле все равно эти тесты пропитаны духом юнит-тестов, так что будем их называть юнит, хотя они и поднимают фрейкворк. просто без поднятия фреймворка они слишком не полные получаются".

например, это ситуация с тем же MockMvc. Там поднимается контекст, но все же эти тесты считаются "юнит".
источник

PD

Plomipu Dmitri in Spring Framework and more
точно. Тесты с подделыванием реального поведения или проверка простого алгоритма - это и есть юнит. Согласен. Как же я мог это упустить ??
источник

Д

Дмитрий in Spring Framework and more
Plomipu Dmitri
нет. Для гугла нет на этот раз. Нету необходимости считать меня дураком, который с ним прям вообще не дружит. Поверь, про мою неспособность пользоваться гуглом - это не правда. Так как найденное там описывает много всего как исключать компоненты и фильтры, используемые, например в, спринг секьюрити( здесь спасибо гуглу, хоть теперь могу попробовать фильтр заблочить для теста запроса к эндпоинту, но это уже другая тема ). Но про исключение конкретно классов-конфигов и последующее подтягивание холостого контекста приложения - НИЧЕГО, ноль. Я уже отчаялся ппц как. Хоть виски пей от горя.
Да я вижу сколько вещей ты приходишь сюда спрашивать, не читая доки, а потом выясняется что ты не понимаешь что ты делаешь.
источник

AE

Alexandr Emelyanov in Spring Framework and more
Дмитрий
Да я вижу сколько вещей ты приходишь сюда спрашивать, не читая доки, а потом выясняется что ты не понимаешь что ты делаешь.
+
источник

PD

Plomipu Dmitri in Spring Framework and more
Дмитрий
Да я вижу сколько вещей ты приходишь сюда спрашивать, не читая доки, а потом выясняется что ты не понимаешь что ты делаешь.
нет. Не понимаю, не что делать, а как именно делать
источник