|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Отстал я от жизни. Мои познания в методологиях наверное начала не то, что 2000, а 1990-х годов. Тогда модно было не TDD, а extrime programming. Вроде как ориентировалось как раз на скорость написание кода. Но одновременное написание теста - одна из основ и в XP. Т.ч. тесты тестам рознь и со скоростью набивания текста связаны слабо. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 11:16 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Отстал я от жизни. Мои познания в методологиях наверное начала не то, что 2000, а 1990-х годов. Тогда модно было не TDD, а extrime programming. Вроде как ориентировалось как раз на скорость написание кода. Но одновременное написание теста - одна из основ и в XP. Т.ч. тесты тестам рознь и со скоростью набивания текста связаны слабо. AFAIK Ну главное в XP это писать вдвоем, желательно за одним компьютером. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 17:02 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Jetbrains там разрабатывал какие-то новые плагины для коллективной разработки. Кто-то пробовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 17:30 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Ну это лишь значит что у вас слабые аналитика, разработка и, видимо, в целом процессы. У вас в принципе мало шансов на эффективную разработку. Это не значит что у вас ничего не получится, это лишь значит что вы медленно продвигаетесь вперед. Основная задача TDD лишь в том, чтоб разбивать сложные задачи/алгоритмы на мелкие шаги. Сложные штуки бывают во всех отраслях и во всех типах организаций. И в "активно развивающихся", и в стабильных. Какой то спонтанный выброс эмоций) зачем мне тдд ,чтобы декомозировать задачи на более маленькие? у вас все настолько плохо с тех.лидом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 17:48 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Я вот когда свои структуры данных разрабатывал. Графы там. и прочее. В первую очередь писал тесты. Это скажем так... сам бох велел. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 19:21 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Я вот когда свои структуры данных разрабатывал. Графы там. и прочее. В первую очередь писал тесты. Это скажем так... сам бох велел. Звучит так ,Как если бы ты пришел в ресторан и прежде чем выбрать что- то из меню сходил в туалет и покакал в себя) поняв что TASTE NOT SO GOOD ты выбрал что то иное,из того что ел вчера) Ну по факту комичная ситуация с TDD - видимо либо аналитики слабые,либо очено мало работы у разрабов- по другому сложно понять - зачем это ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:00 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 mayton Я вот когда свои структуры данных разрабатывал. Графы там. и прочее. В первую очередь писал тесты. Это скажем так... сам бох велел. Звучит так ,Как если бы ты пришел в ресторан и прежде чем выбрать что- то из меню сходил в туалет и покакал в себя) поняв что TASTE NOT SO GOOD ты выбрал что то иное,из того что ел вчера) Ну по факту комичная ситуация с TDD - видимо либо аналитики слабые,либо очено мало работы у разрабов- по другому сложно понять - зачем это Если вспомнить что тесты - суть документация (или спека) переписанная кодом - то все становится на места. Кодишь по спеке - кодишь по TDD. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:09 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... Звучит так ,Как если бы ты пришел в ресторан и прежде чем выбрать что- то из меню сходил в туалет и покакал в себя) поняв что TASTE NOT SO GOOD ты выбрал что то иное,из того что ел вчера) Ну по факту комичная ситуация с TDD - видимо либо аналитики слабые,либо очено мало работы у разрабов- по другому сложно понять - зачем это Если вспомнить что тесты - суть документация (или спека) переписанная кодом - то все становится на места. Кодишь по спеке - кодишь по TDD. возникает один вопрос где взять спеку)тебе такое задатут миллионы разрабов по всему миру и твое ТДД не вытерпит ни какой критики нет никаких спек в реальном программировании- тока у мастадонотов,да и то не всегда и не везде да даже у мастадонтов такая там печаль что забей ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:14 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 mayton пропущено... Если вспомнить что тесты - суть документация (или спека) переписанная кодом - то все становится на места. Кодишь по спеке - кодишь по TDD. возникает один вопрос где взять спеку)тебе такое задатут миллионы разрабов по всему миру и твое ТДД не вытерпит ни какой критики нет никаких спек в реальном программировании- тока у мастадонотов,да и то не всегда и не везде да даже у мастадонтов такая там печаль что забей Тест - это набор утверждений. Обычно простых. Если на вход бизнес-объекта пришло ... тра-ляля то на выходе .. труляля. Обычно это хотя-бы 1 раз проговаривают. Хотя-бы сам для себя ты это проговариваешь. Можно говорить - функция. И мне даже Ф. больше нравится но уж коли мы тут варимся в мире ООП то пускай будет бизнес-объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:28 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... возникает один вопрос где взять спеку)тебе такое задатут миллионы разрабов по всему миру и твое ТДД не вытерпит ни какой критики нет никаких спек в реальном программировании- тока у мастадонотов,да и то не всегда и не везде да даже у мастадонтов такая там печаль что забей Тест - это набор утверждений. Обычно простых. Если на вход бизнес-объекта пришло ... тра-ляля то на выходе .. труляля. Обычно это хотя-бы 1 раз проговаривают. Хотя-бы сам для себя ты это проговариваешь. Можно говорить - функция. И мне даже Ф. больше нравится но уж коли мы тут варимся в мире ООП то пускай будет бизнес-объект. смотри если есть некая вменяемая спека -зачем тебе тест? вот у меня две задачи одна подходит под TDD - по кафке нам летят месаджи из них я должен собрать два объекта и связать их 1 к многим тут да можно написать тест - но накой хер он мне?я буду тратить пару дней на это и потом еще 1 на код?) а тесты юнит я нагенерю за пару часов ну и вторая задача это прикрутить АБАК - никто не знает ничего что надо и что должно быть - нука прикрути сюда свой ТДД) шляпа это все ,как правильно сказал выше памфилов- просто какой то дурак сказал и все начали повторять ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:38 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79зачем мне тдд ,чтобы декомозировать задачи на более маленькие?Кто-то что-то говорил про декомпозицию задач? Книгу по TDD ты видимо не читал. Когда тут тебе рассказывают что такое TDD ты тоже не особо вчитываешься. Т.е. ты влезаешь в дискуссию в которой заведомо не разбираешься и учиться не отказываешься. Осталось только понять зачем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:42 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 смотри если есть некая вменяемая спека -зачем тебе тест? вот у меня две задачи одна подходит под TDD - по кафке нам летят месаджи из них я должен собрать два объекта и связать их 1 к многим тут да можно написать тест - но накой хер он мне?я буду тратить пару дней на это и потом еще 1 на код?) а тесты юнит я нагенерю за пару часов ну и вторая задача это прикрутить АБАК - никто не знает ничего что надо и что должно быть - нука прикрути сюда свой ТДД) шляпа это все ,как правильно сказал выше памфилов- просто какой то дурак сказал и все начали повторять Панфилов сказал что не нужно бездумно повторять. Вот ты поменяешь проект (кто знает) и придешь вникать в новые процессы. А там окажется и команда и весь облуживающий персонал сидят на TDD просто потому что предметная область такова. И условия подходящие. Что возмутишся? Или скажешь - я не буду делать? Хер там. Сядешь, утрёшь слёзы и погнал кодить по TDD. Так што от тюрмы и от сумы.... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 22:47 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev asv79зачем мне тдд ,чтобы декомозировать задачи на более маленькие? Книгу по TDD ты видимо не читал. Когда тут тебе рассказывают что такое TDD ты тоже не особо вчитываешься. Т.е. ты влезаешь в дискуссию в которой заведомо не разбираешься и учиться не отказываешься. Осталось только понять зачем :) я прекрасно знаю что такое ваше печальное ТДД и имел опыт работы с таким подходом) вот ты стасят вроде и норм местами,но вешаешь ярлыки не разобравшись в проблеме) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 00:37 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 смотри если есть некая вменяемая спека -зачем тебе тест? вот у меня две задачи одна подходит под TDD - по кафке нам летят месаджи из них я должен собрать два объекта и связать их 1 к многим тут да можно написать тест - но накой хер он мне?я буду тратить пару дней на это и потом еще 1 на код?) а тесты юнит я нагенерю за пару часов ну и вторая задача это прикрутить АБАК - никто не знает ничего что надо и что должно быть - нука прикрути сюда свой ТДД) шляпа это все ,как правильно сказал выше памфилов- просто какой то дурак сказал и все начали повторять Панфилов сказал что не нужно бездумно повторять. Вот ты поменяешь проект (кто знает) и придешь вникать в новые процессы. А там окажется и команда и весь облуживающий персонал сидят на TDD просто потому что предметная область такова. И условия подходящие. Что возмутишся? Или скажешь - я не буду делать? Хер там. Сядешь, утрёшь слёзы и погнал кодить по TDD. Так што от тюрмы и от сумы.... Никода я не буду кодить по ТДД,ибо это уже не кодинг,а какая то ферма по выращиваниванию овощей Мне нужен полет фантазии и прочие ништяки,а свое ТДД засуньте себе ЖПО и будьте здоровы) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 00:40 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Панфилов сказал что не нужно бездумно повторять. панфилов сказал то что сказал и там явно не то что ты сейчас написал По факту ТДД нужно для просто каких то конченых даунов ,которые не способны реализовать задачу иначе,чем через уже готовый тест ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 00:53 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, мне нравится твой неприкрытый максимализм. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 10:14 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsevgmugarновый публичный метод(e.g. getResults()), который возвращает результаты в виде какой-то удобной (и unmodifiable) структуры, Ну вот ты открыл метод который до этого был private или package private (если мы его таки открывали для тестирования). Что здесь принципиально поменялось? Т.е. если этот метод лежал в старом классе, то тебе не нравилось его открывать только для тестирования. А если его перенести в другой класс и сделать public, то так открывать код чисто для тестирования - правильно. Почему? gmugarон не раскрывает никаких кишок класса; по сути, это те же данные, которые клиенты уже получают посредством toCsv(), просто в другом формате Плохо тут то что у нас +1 публичная сущность. До этого я видел с какими классами в пакете мне нужно было взаимодействовать, а теперь оказывается есть public классы которые на самом деле мне не нужны. Но эта проблема решается - твой новый класс можно сам по себе сделать package private, т.е. он не будет виден из-вне пакета. Но опять же - в чем разница метод открывать или класс? мы с вами по кругу ходим. напомню, что изначально вопрос был в том нужно ли тестировать private методы. речь шла о private, а не о package-private, что не одно и то же. моя мысль в том, что если, вдруг, без тестирования через private не получается (с соблюдением концепции хорошего unit-теста, одна из важных особенностей которого - простота написание этого самого unit-теста), то надо что-то менять, а не лезть в private. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 11:52 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
gmugar Stanislav Bashkyrtsevпропущено... Ну вот ты открыл метод который до этого был private или package private (если мы его таки открывали для тестирования). Что здесь принципиально поменялось? Т.е. если этот метод лежал в старом классе, то тебе не нравилось его открывать только для тестирования. А если его перенести в другой класс и сделать public, то так открывать код чисто для тестирования - правильно. Почему? пропущено... мы с вами по кругу ходим. напомню, что изначально вопрос был в том нужно ли тестировать private методы. речь шла о private, а не о package-private, что не одно и то же. моя мысль в том, что если, вдруг, без тестирования через private не получается (с соблюдением концепции хорошего unit-теста, одна из важных особенностей которого - простота написание этого самого unit-теста), то надо что-то менять, а не лезть в private.Ну дак то что ты предлагаешь сделать - это и есть лезть в private. Твое предложение заключается в том чтоб просто открыть приватный код, выделив его в отдельный класс. Я лишь хочу заметить что это ничем по своей сути не отличается от того чтоб сделать приватный метод package private оставив его в изначальном классе. В обоих случаях мы открываем private код. А правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 11:58 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Мы скоро дойдем до Java9 модулей. Мне кажется спор - схоластика вокруг ООП. Что считать приватным и полу-приватным. Ведь это же не важно. А важно чтобы бизнес-кейс прошел на 100% в зеленый сегмент тестирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 12:23 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav BashkyrtsevА правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами. с этим, собственно, никто и не спорит. вообще тестировать нужно только, этот самый, "настоящий public API". но вот c "логику очень часть неудобно покрывать через public интерфейс."(это ваши слова), я не согласен в корне. мой опыт, однозначно, не совпадает с этой точкой зрения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 12:26 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Народ (прогеры) уверяет в веб, что при тестах скорость снижается только первые два года их написания. Зато потоооооом)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 12:36 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Ну дак то что ты предлагаешь сделать - это и есть лезть в private. Твое предложение заключается в том чтоб просто открыть приватный код, выделив его в отдельный класс. Я лишь хочу заметить что это ничем по своей сути не отличается от того чтоб сделать приватный метод package private оставив его в изначальном классе. В обоих случаях мы открываем private код. А правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами. Не совсем. Если нужно протестировать private метод, это значит, что этот метод не может быть private. И скорее всего там где-то нарушен принцип "single responsibility principle". Так что вынести логику в отдельный класс это скорее всего правильное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 13:24 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul Stanislav Bashkyrtsev Ну дак то что ты предлагаешь сделать - это и есть лезть в private. Твое предложение заключается в том чтоб просто открыть приватный код, выделив его в отдельный класс. Я лишь хочу заметить что это ничем по своей сути не отличается от того чтоб сделать приватный метод package private оставив его в изначальном классе. В обоих случаях мы открываем private код. А правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами. Не совсем. Если нужно протестировать private метод, это значит, что этот метод не может быть private. И скорее всего там где-то нарушен принцип "single responsibility principle". Так что вынести логику в отдельный класс это скорее всего правильное решение. Stanislav BashkyrtsevРеальный пример: есть робот который умеет переливать жидкость из пробирок в другие пробирки. Одна из команд представленна в виде: ВсосатьЖидкость(сколько, откуда, еще доп параметры). Робот принимает на вход CSV, соответственно классу нужен только один публичный метод: toCsv(). Но в тестах парсить CSV для проверки расчетов очень не удобно из-за чего приходится открывать кой-какие внутренности.В этом примере SRP не поможет. Просто мы будем тестировать либо CSV, либо прийдется открывать поля класса через те же package private или public getter'ы. Здесь явно нарушается инкапсуляция только ради тестов. И это частая проблема. Просто люди так много слышат что тесты якобы улучшают дизайн, что пытаются отгонять от себя эти темные мысли :D gmugarвообще тестировать нужно только, этот самый, "настоящий public API".Наша песня хороша - начинай сначала :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 14:15 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Просто люди так много слышат что тесты якобы улучшают дизайн Вообще практическая польза тестов стремится к нулю по факту они ипользуются лишь при сборке и потом приложение попадает на тестовые стенды ,где даже если бы тестов не было - все это вылезет 100500 тысяч миллионов раз и без всяких юнит тестов Тоесть просто выкидываем деньги на ветер- тратя время разрабов на создание и что не мало важно поддержку этой юзлесс истории Стандартная ситуация - написаны тесты,поступила задача поменять какой то класс ,который учавствовал в тесте- фигах тесты падают- хотя фактически все норм,просто тест уже неактуален и вот ты идешь ее актуализировать Получается порочный круг ,вместо какой то видимой помощи,тесты наоборот замедляют работу разработчиков Вот что по сути нужно,это коменнты на коде - ты тут нагадил - а потом после тебя люди приходят и гадают ,а что это такое и что он хотел- доходит до такого ,что никто не в состоянии понять для чего вот это поле в классе и какой в нем смысл) Я не против тестов ,как таковых - но какой то продуктивной пользы в них не вижу от слова совсем и есть конторы где с тестами носятся как с писаной торбой,а есть где этих тестов нет и все прекрасно работает и развивается в своем ключе без них ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 14:53 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, тыж в банке верно? Значит в разработке есть своя цена ошибки. Это как страховка. Ты платишь по чуть-чуть чтобы для прод-релиза иметь больше гарантий что ты ничего не сломал внося изменения. То что ты говоришь про тестовые стенды - это другая часть работы. Это наверное отвественность QA. Но QA не тестирует нефункциональное минорное и техническое. Всякие там NPE и прочее. Они конешно могут это найти случайно. Но репутация сектора разработки тоже страдает. Выж не должны выкатывать забагованный по самую крышу рализ-кандидат. Надо как-то проявить аккуратность. Репутационный вопрос вобщемто. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 15:02 |
|
|
start [/forum/topic.php?fid=59&startmsg=40075362&tid=2120410]: |
0ms |
get settings: |
16ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
54ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
504ms |
get tp. blocked users: |
0ms |
others: | 372ms |
total: | 956ms |
0 / 0 |