Здравствуйте, another_coder, Вы писали:
_>Я считаю тестирование приватных методов плохой практикой. В данный момент, для меня это однозначное зло, но я не хочу быть "зашоренным". Поэтому, хочу задать вопрос....
Уже по озвученному можно спросить: правильно ли я понимаю, что следуя вашей логике, если некий метод нуждается в тестах, то его следует сделать публичным?
Потому что, допустим, есть у вас собственный метод какой-то сортировки. Он используется в публичных методах, но через них нет возможности как следует протестировать сортировку. Как быть? Делать сортировку публичной? А ну как завтра придётся изменить как-то её или вообще отказаться от сортировки? Удаление метода из публичного АПИ не самая простая операция. Сложнее удаления приватного.
Приватность или публичность методов — это вопрос инкапсуляции, который, вообще говоря, никак не пересекается с необходимостьючто либо протестировать. Можно искусственно завести правидло — тестировать только открытое АПИ, но при этом могут возникнуть различные проблемы. И придётся или отходить от правила, или выносит в открытое АПИ, то чему там, может быть, и не место.
Просто не следует возводить подобное правило в догму, и если где-то нужно протестировать нечно закрытое, то подумать так и сяк и может быть, протестировать.
Ещё пример: у вас может быть большой сложный класс с большим количеством методов, который наружу выставляет всего навсего одн метод ,запускающий остальную "кухню". Тут можно подойти к тестированию по-разному:
Попробовать через этот единственный метод протестировать всё что только можно
Потестрировать какие-то приватные методы, отрабьотав большую часть кейсов на них более конкретно
Путь a) теоритически более верный, но на практике обычно оказываетсядостаточно сложным. Много кейсов нужно продумать и в случае упавшего теста не так просто бывает определить, что же конкретно не раюотает — где в реализации что пошло не так.
Путь б) лишён всех этих проблем, но при большой переделке реализации придётся перелопатить множество тестов.
Просто посомтрите и в каждом конкретном случае решайте по-своему, каким путём пойти в зависимости от тяжести последствий, например. От имеющегося времени. Так же не забывайте, что сегодня сделав б), завтра ничто не мешает сделать a)