Это классическая ситуация, когда надо использовать мок -- только не вручную, конечно, его изготавливать, а воспользоваться одним из многочисленных фреймворков.
Здравствуйте, enji, Вы писали:
E>Привет!
E>Есть такая система:
E>E>class A
E>{
E> IB ib;
E>};
E>interface IB;
E>class B1 : IB;
E>
E>Класс B1 написан и протестирован. Теперь надо реализовать и протестировать класс А, который использует IB. Стоит ли создавать BTest, реализующий IB, или же можно воспользоваться готовым B1?
E>Аргументы за использование B1:
E> — IB имеет достаточно сложную семантику, которую придется реализовывать в BTest (и отлаживать)
E> — В рабочем коде A и B1 будут использоваться вместе, возможно при этом проявятся дополнительные ошибки в B1 (не выявленные тестами B1). При использовании B1 для тестов мы имеем еще и интеграционное тестирование A + B1
E>Аргументы за использование BTest:
E> — Какие-то особенности A проще протестировать, имея контроль над реализацией IB
E>Правильно наверное сделать отдельно тесты A+BTest, а затем интеграционные A+B1. Но это сильное дублирование кода, да и просто нет времени так делать.
E>А вы как считаете?