Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: Тестирование private методов  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Отстал я от жизни. Мои познания в методологиях наверное начала не то, что 2000, а 1990-х годов.

Тогда модно было не TDD, а extrime programming. Вроде как ориентировалось как раз на скорость написание кода. Но одновременное написание теста - одна из основ и в XP.

Т.ч. тесты тестам рознь и со скоростью набивания текста связаны слабо.

AFAIK
3 июн 21, 11:16    [22330800]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
Leonid Kudryavtsev
Отстал я от жизни. Мои познания в методологиях наверное начала не то, что 2000, а 1990-х годов.

Тогда модно было не TDD, а extrime programming. Вроде как ориентировалось как раз на скорость написание кода. Но одновременное написание теста - одна из основ и в XP.

Т.ч. тесты тестам рознь и со скоростью набивания текста связаны слабо.

AFAIK


Ну главное в XP это писать вдвоем, желательно за одним компьютером.

<:o)
3 июн 21, 17:02    [22331012]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Jetbrains там разрабатывал какие-то новые плагины для коллективной разработки.

Кто-то пробовал?
3 июн 21, 17:30    [22331025]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Stanislav Bashkyrtsev
Ну это лишь значит что у вас слабые аналитика, разработка и, видимо, в целом процессы. У вас в принципе мало шансов на эффективную разработку. Это не значит что у вас ничего не получится, это лишь значит что вы медленно продвигаетесь вперед.

Основная задача TDD лишь в том, чтоб разбивать сложные задачи/алгоритмы на мелкие шаги. Сложные штуки бывают во всех отраслях и во всех типах организаций. И в "активно развивающихся", и в стабильных.

Какой то спонтанный выброс эмоций)
зачем мне тдд ,чтобы декомозировать задачи на более маленькие? у вас все настолько плохо с тех.лидом ?
3 июн 21, 17:48    [22331041]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Я вот когда свои структуры данных разрабатывал. Графы там. и прочее. В первую очередь писал тесты.
Это скажем так... сам бох велел.
3 июн 21, 19:21    [22331073]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
mayton
Я вот когда свои структуры данных разрабатывал. Графы там. и прочее. В первую очередь писал тесты.
Это скажем так... сам бох велел.

Звучит так ,Как если бы ты пришел в ресторан и прежде чем выбрать что- то из меню сходил в туалет и покакал в себя)
поняв что TASTE NOT SO GOOD ты выбрал что то иное,из того что ел вчера)
Ну по факту комичная ситуация с TDD - видимо либо аналитики слабые,либо очено мало работы у разрабов- по другому сложно понять - зачем это
3 июн 21, 22:00    [22331115]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
asv79
mayton
Я вот когда свои структуры данных разрабатывал. Графы там. и прочее. В первую очередь писал тесты.
Это скажем так... сам бох велел.

Звучит так ,Как если бы ты пришел в ресторан и прежде чем выбрать что- то из меню сходил в туалет и покакал в себя)
поняв что TASTE NOT SO GOOD ты выбрал что то иное,из того что ел вчера)
Ну по факту комичная ситуация с TDD - видимо либо аналитики слабые,либо очено мало работы у разрабов- по другому сложно понять - зачем это

Если вспомнить что тесты - суть документация (или спека) переписанная кодом - то все становится на места.
Кодишь по спеке - кодишь по TDD.
3 июн 21, 22:09    [22331117]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
mayton
asv79
пропущено...

Звучит так ,Как если бы ты пришел в ресторан и прежде чем выбрать что- то из меню сходил в туалет и покакал в себя)
поняв что TASTE NOT SO GOOD ты выбрал что то иное,из того что ел вчера)
Ну по факту комичная ситуация с TDD - видимо либо аналитики слабые,либо очено мало работы у разрабов- по другому сложно понять - зачем это

Если вспомнить что тесты - суть документация (или спека) переписанная кодом - то все становится на места.
Кодишь по спеке - кодишь по TDD.

возникает один вопрос где взять спеку)тебе такое задатут миллионы разрабов по всему миру и твое ТДД не вытерпит ни какой критики

нет никаких спек в реальном программировании- тока у мастадонотов,да и то не всегда и не везде
да даже у мастадонтов такая там печаль что забей
3 июн 21, 22:14    [22331122]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
asv79
mayton
пропущено...

Если вспомнить что тесты - суть документация (или спека) переписанная кодом - то все становится на места.
Кодишь по спеке - кодишь по TDD.

возникает один вопрос где взять спеку)тебе такое задатут миллионы разрабов по всему миру и твое ТДД не вытерпит ни какой критики

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

Тест - это набор утверждений. Обычно простых. Если на вход бизнес-объекта пришло ... тра-ляля то на выходе .. труляля.
Обычно это хотя-бы 1 раз проговаривают. Хотя-бы сам для себя ты это проговариваешь. Можно говорить - функция.
И мне даже Ф. больше нравится но уж коли мы тут варимся в мире ООП то пускай будет бизнес-объект.
3 июн 21, 22:28    [22331129]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
mayton
asv79
пропущено...

возникает один вопрос где взять спеку)тебе такое задатут миллионы разрабов по всему миру и твое ТДД не вытерпит ни какой критики

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

Тест - это набор утверждений. Обычно простых. Если на вход бизнес-объекта пришло ... тра-ляля то на выходе .. труляля.
Обычно это хотя-бы 1 раз проговаривают. Хотя-бы сам для себя ты это проговариваешь. Можно говорить - функция.
И мне даже Ф. больше нравится но уж коли мы тут варимся в мире ООП то пускай будет бизнес-объект.

смотри если есть некая вменяемая спека -зачем тебе тест?
вот у меня две задачи
одна подходит под TDD - по кафке нам летят месаджи из них я должен собрать два объекта и связать их 1 к многим
тут да можно написать тест - но накой хер он мне?я буду тратить пару дней на это и потом еще 1 на код?)
а тесты юнит я нагенерю за пару часов
ну и вторая задача это прикрутить АБАК - никто не знает ничего что надо и что должно быть - нука прикрути сюда свой ТДД)

шляпа это все ,как правильно сказал выше памфилов- просто какой то дурак сказал и все начали повторять
3 июн 21, 22:38    [22331132]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
asv79
зачем мне тдд ,чтобы декомозировать задачи на более маленькие?
Кто-то что-то говорил про декомпозицию задач?
Книгу по TDD ты видимо не читал. Когда тут тебе рассказывают что такое TDD ты тоже не особо вчитываешься. Т.е. ты влезаешь в дискуссию в которой заведомо не разбираешься и учиться не отказываешься. Осталось только понять зачем :)
3 июн 21, 22:42    [22331135]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
asv79

смотри если есть некая вменяемая спека -зачем тебе тест?
вот у меня две задачи
одна подходит под TDD - по кафке нам летят месаджи из них я должен собрать два объекта и связать их 1 к многим
тут да можно написать тест - но накой хер он мне?я буду тратить пару дней на это и потом еще 1 на код?)
а тесты юнит я нагенерю за пару часов
ну и вторая задача это прикрутить АБАК - никто не знает ничего что надо и что должно быть - нука прикрути сюда свой ТДД)

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

Панфилов сказал что не нужно бездумно повторять. Вот ты поменяешь проект (кто знает) и придешь вникать
в новые процессы. А там окажется и команда и весь облуживающий персонал сидят на TDD просто потому что
предметная область такова. И условия подходящие. Что возмутишся? Или скажешь - я не буду делать? Хер
там. Сядешь, утрёшь слёзы и погнал кодить по TDD. Так што от тюрмы и от сумы....
3 июн 21, 22:47    [22331136]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Stanislav Bashkyrtsev
asv79
зачем мне тдд ,чтобы декомозировать задачи на более маленькие?
Кто-то что-то говорил про декомпозицию задач?
Книгу по TDD ты видимо не читал. Когда тут тебе рассказывают что такое TDD ты тоже не особо вчитываешься. Т.е. ты влезаешь в дискуссию в которой заведомо не разбираешься и учиться не отказываешься. Осталось только понять зачем :)

я прекрасно знаю что такое ваше печальное ТДД и имел опыт работы с таким подходом)
вот ты стасят вроде и норм местами,но вешаешь ярлыки не разобравшись в проблеме)
4 июн 21, 00:37    [22331151]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
mayton
asv79

смотри если есть некая вменяемая спека -зачем тебе тест?
вот у меня две задачи
одна подходит под TDD - по кафке нам летят месаджи из них я должен собрать два объекта и связать их 1 к многим
тут да можно написать тест - но накой хер он мне?я буду тратить пару дней на это и потом еще 1 на код?)
а тесты юнит я нагенерю за пару часов
ну и вторая задача это прикрутить АБАК - никто не знает ничего что надо и что должно быть - нука прикрути сюда свой ТДД)

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

Панфилов сказал что не нужно бездумно повторять. Вот ты поменяешь проект (кто знает) и придешь вникать
в новые процессы. А там окажется и команда и весь облуживающий персонал сидят на TDD просто потому что
предметная область такова. И условия подходящие. Что возмутишся? Или скажешь - я не буду делать? Хер
там. Сядешь, утрёшь слёзы и погнал кодить по TDD. Так што от тюрмы и от сумы....

Никода я не буду кодить по ТДД,ибо это уже не кодинг,а какая то ферма по выращиваниванию овощей
Мне нужен полет фантазии и прочие ништяки,а свое ТДД засуньте себе ЖПО и будьте здоровы)
4 июн 21, 00:40    [22331152]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
mayton

Панфилов сказал что не нужно бездумно повторять.

панфилов сказал то что сказал и там явно не то что ты сейчас написал
По факту ТДД нужно для просто каких то конченых даунов ,которые не способны реализовать задачу иначе,чем через уже готовый тест
4 июн 21, 00:53    [22331154]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
asv79, мне нравится твой неприкрытый максимализм.
4 июн 21, 10:14    [22331215]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
gmugar
Member

Откуда:
Сообщений: 23
Stanislav Bashkyrtsev
gmugar
новый публичный метод(e.g. getResults()), который возвращает результаты в виде какой-то удобной (и unmodifiable) структуры,

Ну вот ты открыл метод который до этого был private или package private (если мы его таки открывали для тестирования). Что здесь принципиально поменялось? Т.е. если этот метод лежал в старом классе, то тебе не нравилось его открывать только для тестирования. А если его перенести в другой класс и сделать public, то так открывать код чисто для тестирования - правильно. Почему?
gmugar
он не раскрывает никаких кишок класса; по сути, это те же данные, которые клиенты уже получают посредством toCsv(), просто в другом формате

Плохо тут то что у нас +1 публичная сущность. До этого я видел с какими классами в пакете мне нужно было взаимодействовать, а теперь оказывается есть public классы которые на самом деле мне не нужны. Но эта проблема решается - твой новый класс можно сам по себе сделать package private, т.е. он не будет виден из-вне пакета. Но опять же - в чем разница метод открывать или класс?

мы с вами по кругу ходим.
напомню, что изначально вопрос был в том нужно ли тестировать private методы.
речь шла о private, а не о package-private, что не одно и то же.
моя мысль в том, что если, вдруг, без тестирования через private не получается (с соблюдением концепции хорошего unit-теста, одна из важных особенностей которого - простота написание этого самого unit-теста), то надо что-то менять, а не лезть в private.
4 июн 21, 11:52    [22331261]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
gmugar
Stanislav Bashkyrtsev
пропущено...

Ну вот ты открыл метод который до этого был private или package private (если мы его таки открывали для тестирования). Что здесь принципиально поменялось? Т.е. если этот метод лежал в старом классе, то тебе не нравилось его открывать только для тестирования. А если его перенести в другой класс и сделать public, то так открывать код чисто для тестирования - правильно. Почему?
пропущено...

мы с вами по кругу ходим.
напомню, что изначально вопрос был в том нужно ли тестировать private методы.
речь шла о private, а не о package-private, что не одно и то же.
моя мысль в том, что если, вдруг, без тестирования через private не получается (с соблюдением концепции хорошего unit-теста, одна из важных особенностей которого - простота написание этого самого unit-теста), то надо что-то менять, а не лезть в private.
Ну дак то что ты предлагаешь сделать - это и есть лезть в private. Твое предложение заключается в том чтоб просто открыть приватный код, выделив его в отдельный класс. Я лишь хочу заметить что это ничем по своей сути не отличается от того чтоб сделать приватный метод package private оставив его в изначальном классе. В обоих случаях мы открываем private код.

А правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами.

Сообщение было отредактировано: 4 июн 21, 11:57
4 июн 21, 11:58    [22331265]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Мы скоро дойдем до Java9 модулей. Мне кажется спор - схоластика вокруг ООП. Что считать приватным и полу-приватным.

Ведь это же не важно. А важно чтобы бизнес-кейс прошел на 100% в зеленый сегмент тестирования.
4 июн 21, 12:23    [22331285]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
gmugar
Member

Откуда:
Сообщений: 23
Stanislav Bashkyrtsev
А правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами.

с этим, собственно, никто и не спорит.
вообще тестировать нужно только, этот самый, "настоящий public API".

но вот c "логику очень часть неудобно покрывать через public интерфейс."(это ваши слова), я не согласен в корне.
мой опыт, однозначно, не совпадает с этой точкой зрения.
4 июн 21, 12:26    [22331288]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Народ (прогеры) уверяет в веб, что при тестах скорость снижается только первые два года их написания.
Зато потоооооом))
4 июн 21, 12:36    [22331299]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
Stanislav Bashkyrtsev
Ну дак то что ты предлагаешь сделать - это и есть лезть в private. Твое предложение заключается в том чтоб просто открыть приватный код, выделив его в отдельный класс. Я лишь хочу заметить что это ничем по своей сути не отличается от того чтоб сделать приватный метод package private оставив его в изначальном классе. В обоих случаях мы открываем private код.

А правильный "не лезть в private" заключается в том чтоб оставить prod код в покое и тестировать все через настоящий public API (а не сконструированный только потому что тестам надо было). Со всеми вытекающими плюсами и минусами.


Не совсем. Если нужно протестировать private метод, это значит, что этот метод не может быть private.
И скорее всего там где-то нарушен принцип "single responsibility principle".
Так что вынести логику в отдельный класс это скорее всего правильное решение.
4 июн 21, 13:24    [22331329]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
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".
Наша песня хороша - начинай сначала :)
4 июн 21, 14:15    [22331373]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
Stanislav Bashkyrtsev
Просто люди так много слышат что тесты якобы улучшают дизайн

Вообще практическая польза тестов стремится к нулю
по факту они ипользуются лишь при сборке и потом приложение попадает на тестовые стенды ,где даже если бы тестов не было - все это вылезет 100500 тысяч миллионов раз и без всяких юнит тестов
Тоесть просто выкидываем деньги на ветер- тратя время разрабов на создание и что не мало важно поддержку этой юзлесс истории
Стандартная ситуация - написаны тесты,поступила задача поменять какой то класс ,который учавствовал в тесте- фигах тесты падают- хотя фактически все норм,просто тест уже неактуален и вот ты идешь ее актуализировать
Получается порочный круг ,вместо какой то видимой помощи,тесты наоборот замедляют работу разработчиков

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

Я не против тестов ,как таковых - но какой то продуктивной пользы в них не вижу от слова совсем и есть конторы где с тестами носятся как с писаной торбой,а есть где этих тестов нет и все прекрасно работает и развивается в своем ключе без них
4 июн 21, 14:53    [22331399]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование private методов  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
asv79, тыж в банке верно? Значит в разработке есть своя цена ошибки.

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

То что ты говоришь про тестовые стенды - это другая часть работы. Это наверное отвественность QA.
Но QA не тестирует нефункциональное минорное и техническое. Всякие там NPE и прочее. Они конешно
могут это найти случайно. Но репутация сектора разработки тоже страдает. Выж не должны выкатывать
забагованный по самую крышу рализ-кандидат. Надо как-то проявить аккуратность. Репутационный вопрос
вобщемто.
4 июн 21, 15:02    [22331409]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Java Ответить