Продемонстрируем тестирование взаимодействий на примере класса TCommandQueue. Из табл. 3.2, которая была составлена на основе спецификаций классов, описанных в приложении 2, видно, что класс очереди команд взаимодействует со следующими классами:
TBearingParam, TAxleParam, TCommand, TStore, TterminalBearing.С объектом TCommand осуществляется взаимодействие третьего типа, т. е. TCommandQueue создает объекты класса TCommand как часть своей внутренней реализации. С остальными классами осуществляется взаимодействие первого типа: ссылки на объекты классов TStore и TTerminalBearing передаются как параметры в конструктор TCommandQueue, а ссылки на объекты классов TBearingParam и TAxleParam передаются в метод TCommandQueue.AddCommand.
Одновременно с изучением этого раздела можно открыть проект IntegrationTesting\IntegrationTests.sln.
Для тестирования взаимодействия класса TCommandQueue и класса TСommand, так же, как и при модульном теcтировании, разработаем спецификацию тестового случая:
Названия взаимодействующих классов: TСommandQueue, TCommand | Название теста: TCommandQueueTest1 |
Описание теста: тест проверяет возможность создания объекта типа TCommand и добавления его в очередь при вызове метода AddCommand Начальные условия: очередь команд пуста Ожидаемый результат: в очередь будет добавлена одна команда |
На основе этой спецификации был разработан тестовый драйвер - класс TCommandQueueTester, который наследуется от класса Tester. Этот класс содержит:
Сначала создадим тест, который проверяет, создается ли объект типа TСommand, и добавляется ли команда в конец очереди.
private void TCommandQueueTest1() { Init(); LogMessage("///////// TCommandQueue Test1 /////////////"); LogMessage("Проверяем, создается ли объект типа TCommand"); // В очереди нет команд dump(); // Добавляем команду // параметр = -1 означает, что команда должна быть добавлена //в конец очереди CommandQueue.AddCommand(TCommand.GetR,0,0,0,new TBearingParam(),new TAxleParam(),-1); LogMessage("Command added"); // В очереди одна команда dump(); } Пример 3.2. Тест, проверяющий создание объекта типа TСommandВ этот класс включены еще два разработанных теста.