Unit-тесты :: как тестировать приватные методы?

kirill_presley

Новичок
Unit-тесты :: как тестировать приватные методы?

Возможно, вопрос дурацкий, тогда отошлите меня к соответствующим материалам.

Предположим, есть у тестируемого класса некий метод, объявленный как private. В этом случае попытка написать unit-тест с выражением вроде:

PHP:
$this->assertEquals($some_value, $obj->_some_private_method($some_params));
...естественно приводит к возникновению фатальной ошибки.

Как быть?

Можно на время тестирования заменить private на public, но это плохо, т. к. тесты надо будет запускать и через год, а тогда не будешь же шерстить весь код и менять модификаторы у всех приватных методов.

Можно для каждого приватного метода создавать его публичную "обёртку", но это ещё бредовее, ибо не проще ли тогда метод сразу сделать публичным? :confused:

Какие ещё могут быть варианты действий?
 

kirill_presley

Новичок
Ну, в общем, основная идея понятна. Если нужно тестировать приватные методы - значит, что-то с дизайном класса не так. Я так и думал ;)))
 

zerkms

TDD infected
Команда форума
kirill_presley
Если нужно тестировать приватные методы - значит, что-то с дизайном класса не так.
я бы даже перефразировал - если это нужно - значит код разрабатывался, не следуя принципам tdd
 

gonza

Новичок
Автор оригинала: zerkms
kirill_presley

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

-~{}~ 05.03.07 19:16:

ступил. про привате... согласен.
 

atv

Новичок
kirill_presley, почитай ещё вот эту тему http://forum.agiledev.ru/index.php?t=msg&th=853&start=0&
 
Сверху