All streams
Search
Write a publication
Pull to refresh
3
0
Виктор Егоров @Capri

Кровавый Энтерпрайз

Send message

А что в них надо допиливать? У меня K13 Max, достал из коробки, подключил и пользуюсь.

В примере ведь дёргают userDataRepositoryчерез userDataService . Непосредственно к репозитарию обращаюся только в одном месте, для вызова findByUsername, что в интеграционном тесте вполне допустимо.

Мы уже более пяти лет достаточно успешно используем гексагональную архитектуру в своих продуктах. У нас немного другая терминология (к примеру вместо Incoming и Outgoing Adapters мы используе термины Driving и Driven Adapters) и более сложное разбиение слоёв на пакеты, модули и проекты, но суть такая-же. За это время мы обросли набором абстракций для каждого слоя, и вынесли туда весь "скучный", рутинный код и его тесты, что позволяет быстро добавлять новые предметные области, уменьшает вероятность ошибок и сокращает время ревью. Наш опыт показал, что архитектура достаточно быстро понимается новыми членами команды и сокращает время их адаптации.
Наш софт сертифицирован в ЕС как "медицинский продукт" и в нашем случае наличие большого количества UseCase портов огромное благо. Это позволяет доказуемо покрывать все эти use cases тестами, так как одним из аспектов сертификации является requirements traceability, и за наличием таких тестов следят на сертифиционных аудитах.
Хотел ты посоветовать вам посмотреть в сторону ArchUnit тестов, они помогают отслеживать нарушения границ слоёв, отсутствие взаимодействий между адаптерами минуя core и многое другое.

По крайней мере в Германии нет дворников в российском понимании. Уборкой территорий и сбором мусора централизовано занимаются городская коммунальная служба. Попасть туда непросто, т.к. отстутствует необходимость иметь какое-либо образование, при этом платят достойную зарплату.

Специально поинтересовался - годовой билет да рыбалку стоит на Рейне 16€ в год. Это примерно час неквалифицированной работы.

Скорее по мотивам рассказов Соловьёва, Киселёва и Скабеевой. Это всё такой бред, что даже опровергать нет смысла. Говорю, как проживший в Германии 27 лет.

В рамках изучения Java можете уже попробовать отделить бизнес-логику от представления, потом будет легче переходить на FX и вообще на любой другой UI. Смотрите в сторону Model-View-Controller или Model-View-Presenter. Группируйте похожие по смыслу и функционалу компоненты в отдельные пакеты. Не ленитесь писать осмысленные коментарии коммитов, через год даже вы сами не вспомните, что поменялось в upd_28_05_21_02 и почему.

Можно взять любой произвольный класс и представить, что вы принимаете участие в Code Review. Возьмём класс UserServiceImpl. Вопросы:

*Какой интерфейс имплементирует данный класс?

*Почему поля класса package-private?

* Зачем нужна аннотация @Autowired в параметрах конструктора?

Очень хочется верить, что всё в действительности обстоит так, как вы описываете. Я в свою очередь хотел бы сослаться на статью Potential Risks and Benefits of Gain-of-Function Research: Summary of a Workshop www.ncbi.nlm.nih.gov/books/NBK285575
В разделе Potential Risks: Biosafety and Biosecurity приводятся такие цифры:
Between 2005 and 2012, there were 1,059 release reports with 3,780 potential worker exposures.
Если я понял правильно, то речь здесь идёт только о статистике штатовского CDC.

Ещё есть общедоступная Laboratory-Acquired Infection Database my.absa.org/LAI
Не возьмусь судить, насколько актуальна и достоверна приведённая там информация, но количество аварий в лабораториях уровня от BSL-3 впечатляет.
Я думаю вы согласитесь, что доказать факт потенциальной аварии без содействия Китая практически невозможно. При этом официальный Китай явно не заинтересован в полномасштабном и прозрачном расследовании. Сначала вообще отказывали ВОЗ в проведении расследования:
1 мая — РИА Новости. Китайские власти отвечают отказом на просьбы Всемирной организации здравоохранения (ВОЗ) принять участие в расследовании относительно возникновения коронавируса нового типа, заявил представитель ВОЗ в Китае Годен Галеа.

потом затягивали приезд экспертов:
ЖЕНЕВА, 5 января. /ТАСС/. Власти Китая пока не выдали разрешение на прибытие международной научной группы экспертов Всемирной организации здравоохранения (ВОЗ), направившейся в народную республику для выяснения обстоятельств происхождения коронавируса. Об этом заявил во вторник на брифинге в Женеве генеральный директор ВОЗ Тедрос Аданом Гебрейесус.

и скрывали информацию:
Москва. 12 февраля. INTERFAX.RU — Китай отказался предоставлять экспертам Всемирной организации здравоохранения (ВОЗ), работавшим в Ухане, первичную персонализированную информацию о ранних случаях заражения коронавирусом COVID-19


И как закономерный результат:
НЬЮ-ЙОРК, 4 марта. /ТАСС/. Международная миссия экспертов от Всемирной организации здравоохранения (ВОЗ) призвала признать несостоятельным доклад о поездке в Китай в целях выяснения происхождения коронавируса, вызвавшего пандемию COVID-19.


Именно эти и другие косвенные факты наталкивают меня на мысль, что версию о том, что начало пандемии так или иначе связано с лабораторией в Ухане отметать никак нельзя.
Несмотря на все строгие меры, аварии с заражением сотрудников случаются регулярно. Взять, к примеру, наш новосибирский ГНЦ«Вектор»: В открытых источниках описаны случаи заражение вирусом Эбола Антонины Пресняковой, заражение вирусом Марбург Николая Устинова и Сергея Визунова. Причём в случае с Визуновым произошел вынос вируса за пределы лаборатории. На наше счастье эти филовирусы пока не распространяются воздушно-капельным путём.
Помимо непосредственных заражений в лаборатории есть и проблема утилизации опасных лабораторных отходов. В 2008 году, например, Ростехнадзор выявил грубые нарушения процедур утилизации на том же «Векторе». regnum.ru/news/986989.html

Думаете в уханьском институте дело обстоит иначе?
Юнит тесты фиксируют поведение бизнес-логики, внутреннего слоя приложения, тогда как интеграционные тесты фиксируют ожидания от внешней инфраструктуры, необходимой для предсказуемой работы бизнес-логики. И то и другое одинаково важно, и то и другое даёт профит. Как быть, если вдруг поменяется таблица в базе или контроллер начнёт отдавать неизвестный клиенту HttpStatus? Но проверять это в юнит тестах не рационально из-за медлительности такого рода тестов. Такое лучше проверять в интеграционных тестах.
вы про WebMvcTest? но это уже стандарт гонять тесты контроллера через MockMvc, вы поступаете иначе?

Мы убираем всю бизнес-логику из контроллеров и в юнит тестах контроллеров проверяем только вызовы сервисов. Проверку поведения самого контроллера, как элемента инфраструктуры, мы выносим в интеграционные тесты. Тем самым экономится время разработчиков — при работе им достаточно регулярно прогонять быстрые юнит тесты, медленные интеграционные тесты выполняет CI-система.
Я понимаю, что это сделано для демонстрации принципа, но поднимать в юнит тесте Spring контекст для проверки конкатенации в контроллере это чересчур. Юнит тесты должны быть кроткими и быстрыми. Конкатенацию надо выносить в отдельный сервис, покрывать его тестами, а в юнит тесте контроллера проверять, вызывается ли данный сервис. Причём условие Mockito.atLeastOnce() допускает многократный вызов сервиса, такое поведение надо дополнительно обосновывать.

Information

Rating
Does not participate
Registered
Activity