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