изменение базы данных перед каждым тестом - PullRequest
2 голосов
/ 02 февраля 2011

Я пишу некоторые профилирующие тесты для определенных методов, таких как добавление клиентов (разные размеры пакетов 100, 1000, 10000) в таблицу клиентов в базе данных. Я использую базу данных SqlCE из-за ее поддержки со стороны LINQ.

Теперь, чтобы достичь идеального случая, я меняю базу данных перед каждым тестом, чтобы у каждого теста была одна и та же база данных. для этого я использую File.Copy (), но при использовании db.customers.FirstOrDefault () во втором тесте я получаю сообщение об ошибке «Возможно, файл базы данных поврежден. Запустите утилиту восстановления, чтобы проверить файл базы данных».

Я очищаю контекст данных после теста. Проблема также может быть с linq. Я не уверен. Любая идея решить это. или любая альтернатива этому подходу. Любые предложения требуются.

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

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

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

0 голосов
/ 02 февраля 2011

Вы можете использовать SQLite с базой данных в памяти.

SQLiteConnection conn = new SQLiteConnection ("Источник данных =: память:");

пс: запомните ответ про леппи

0 голосов
/ 02 февраля 2011

Альтернативой может быть наличие функции, которая очищает данные в БД (или в определенных таблицах) и заполняет их до желаемого начального состояния. Затем он будет запущен до начала ваших тестов (или до отдельных тестов, в зависимости от требований). Использование этого метода сделает File.Copy() ненужным.

...