Как эффективно протестировать SQL / JPQL / HQL? - PullRequest
4 голосов
/ 08 мая 2011

При юнит-тестировании часто говорят, что dont test the database as that is an integration test ( см. Пункт 4 ).

Однако SQL / JPQL / HQL инкапсулирует data store specific логику, которая часто в строковом формате о том, как получить доступ к данным. Эта команда доступа к данным строки произвольной формы может легко ошибиться и, следовательно, должна быть протестирована.

Как мне эффективно проверить такую ​​логику?

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

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

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

Если вы это сделаете, просто обратите внимание на незначительные различия между SQLite и вашим реальная база данных, и попытайтесь сделать ваши запросы совместимыми с обоими.

Надеюсь, это поможет,
Assaf.

1 голос
/ 08 мая 2011

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

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