Re[3]: Юнит тестирование приватных членов
От: Svjat Украина  
Дата: 03.04.07 14:30
Оценка:
Здравствуйте, Ceceron, Вы писали:

C>— "тестировать только через интерфейс ( через паблик методы )"

C>Не согласен, тестирование через интерфейс — это фактически тестирование черного ящика и никак не юнит тестирование

а зачем вообще тогда отделять интерфейс от реализации?
если писать тесты для всех приватных методов, да еще проверять состояние приватных членов, то мало того что времени (объем кода) в юнит тестах будет больше самого кода — главное что это смешает разные уровни процесса.

-------------


давай на примерах, вот мой:

в САД есть класс — HrenovinaStorage

его Responsibilities — постоянное хранение объектов типа Hrenovina,
средства добавления / удаления / получения объекта по ключу

соотв. у него есть след. методы
public void Start();
public void Stop();
public void Add( Hrenovina hrn );
public void Remove( string key );
public void Clear();
public Hrenovina Get( string key );

теперь пишем простой тест:
  
   HrenovinaStorage storage = new HrenovinaStorage( TmpName );
   storage.Start();
   storage.Clear();   // сразу все чистим

   storage.Add( new Hrenovina( key ) );   // добавляем новый объект
   storage.Get( key );    // проверяем добавил или нет 
    
   storage.Remove( key ); // ...
   storage.Get( key );    // ...

   // теперь проверяем как он перманентно хранит объекты

   storage.Add( new Hrenovina( key2 ) );
   storage.Add( new Hrenovina( key3 ) );
   storage.Stop();
   storage = null;
   HrenovinaStorage storage = new HrenovinaStorage( TmpName );
   storage.Start();
   storage.Get( key2 );   // проверяем сохранил или нет
   storage.Get( key3 );
   // -------------------

все, если тесты срабатывают, значит класс делает то, что должен

теперь покажи где здесь место для проверки приватных методов и полей? ( а они таки есть ).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.