Как выполнить модульное тестирование класса базы данных - PullRequest
5 голосов
/ 26 октября 2010

Это, вероятно, задавали много раз, но здесь идет речь:

У меня есть класс, полный дБ соединений

открытое соединение
запрос дБ
читать значения
закрыть соединение

Как мне проверить этот материал?

Нужно ли создавать поддельную базу данных? Я думаю, я мог бы издеваться над классами MySql (для c #), но это также много работы

Некоторые из утверждений "INSERT INTO", что мне с этим делать?

Ответы [ 3 ]

7 голосов
/ 26 октября 2010

Материал, который трудно проверить, часто тесно связан или не соответствует принципу единственной ответственности .

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

Использовать интерфейсы данных вместо конкретной реализации драйвера: IDbConnection вместо SqlConnection. Используйте DbProviderFactory, чтобы получить правильную реализацию соединения. Затем используйте connection.CreateCommand(), чтобы получить команду и т. Д.

Делая все это, было бы намного проще протестировать слой данных. И помните, у анализатора данных не должно быть никакой логики. Единственная цель - загрузить данные из источника данных.

Но если вы не хотите что-то менять: работать с базой данных - самый простой способ. Удалите все данные и вставьте новые тестовые данные перед каждым тестом (чтобы удалить любые изменения во время предыдущего теста).

2 голосов
/ 26 октября 2010

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

Не вставляйте в исходный код какую-либо вставку, используйте студии управления sql и вставляйте туда, пока не узнаете, что соединения и все работает. Просто покажите все эти значения.

0 голосов
/ 28 июля 2015

Вы можете использовать живую базу данных MySql, работающую локально на вашем компьютере.

Для этого я создал пакет Nuget, который вы можете добавить в свой проект: https://github.com/stumpdk/MySql.Server

Он запускает локальный сервер MySql каждый раз, когда вы запускаете тесты. Это быстро, дает решение, которым ваша команда может поделиться, и вам не нужно тратить время на установку сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...