2010-01-29 2 views
0

В нашем модульном тестировании у меня есть объект-заглушка, который создает набор данных в памяти, которые будут использоваться во время модульного тестирования, используемый.Тестирование модулей - Как настроить тестовые данные при записи данных базы данных

У меня есть модульные тесты, которые проверяют количество строк, возвращаемых из этого набора, с использованием тестируемого запроса и значений, предоставленных запросу в тесте. Моя первая проблема заключается в том, что, поскольку мы используем MSTest и не поддерживаем параметризованные тесты, у нас есть один тест для каждого различного набора значений, и они закончились множеством тестов, отличающихся только значениями, указанными в одной подпрограмме. Политически может быть сложно использовать различные рамки тестирования.

Кроме того, работа с данными несколько неудобна, поскольку она создается путем добавления сущностей к набору через код, поэтому трудно легко увидеть, какие данные находятся в наборе, и если мы решили добавить записи в этот набор в будущем , нам нужно обновить количество записей, которые должны быть возвращены в тестах, поэтому наши тесты очень сильно зависят от этих данных. Кажется, нет возможности автоматизировать это. Это так?

ответ

2
  1. Поскольку вы уже исключили использование другой модульной системы тестирования, как насчет написания собственного теста на параметризованные тесты. Напишите тест, который проходит через разные наборы данных, вызывая метод частного помощника с разными параметрами. Соберите результат каждого запуска набора данных на «параметр сбора». Я бы посоветовал вам регистрировать только ошибки/неудачные наборы данных для снижения уровня шума. В конце цикла, если параметр сбора не пуст, введите эквивалент Assert.Fail и запишите результаты на консоль. (Недостатком является то, что вы не можете видеть отдельные тесты в графическом интерфейсе, и если организация контролирует количество тестов, вы получаете только +1 для всей этой работы.)
  2. Это дает вам преимущество в том, сообщение по вашему желанию - вы можете включить основные бит в трассировку сбоя. Это поможет вам «быстро увидеть», какой сценарий завершился неудачно.
+0

+1. Разумеется, вы можете запустить свой собственный тестовый класс, основанный на данных; мы сделали что-то подобное до получения NUnit 2.5. Он работал достаточно хорошо :) –

0

Посмотрите, как окончательная версия Visual Studio 2010 делает это для тестирования базы данных (вы можете загрузить полностью сконфигурированный VPC).

Опцией было бы добавить «контекст» к вашим тестам, поэтому при инициализации теста контекст инициализируется параметрами, необходимыми для теста. Вы можете либо получить доступ к параметрам с помощью кода в тестовом методе, либо динамически назначить его тестируемому коду (возможно, это не лучший вариант).

Также вы можете добавить ожидаемые результаты или еще лучше условия, которым должен соответствовать тест. Эти условия могут быть инициализированы из некоторого источника данных (например, базы данных) и добавлены в виде набора данных. Создайте метод, который будет оценивать условия для метода тестирования.

Рассмотрите возможность создания определенных классов для обработки различных контекстных настроек или условий и создания базового тестового класса (который добавляет функциональность), из которого вы можете наследовать класс.

Смежные вопросы