Модульное тестирование - Как настроить тестовые данные при создании заглушек данных базы данных - PullRequest
0 голосов
/ 29 января 2010

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

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

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

Ответы [ 2 ]

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

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

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

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

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

...