Как unit test SQL-запрос?

У меня есть класс DBHandler, который берет запрос, запускает его через SQL-сервер, проверяет наличие ошибок и возвращает результат. Как я могу unit test этот класс?

Изменить. Я постараюсь уточнить: DBHandler отвечает за передачу запроса на сервер. Чтобы проверить, что на самом деле это делает, выдает правильные исключения и т.д., Я хочу подключить его к макету DB, который я буду заполнять. Мой вопрос: как это сделать? Как я могу создать макет "сервера", который обрабатывает вызовы?

Ответ 1

Просто передайте SQL-запрос и сравните возвращаемый результат с ожидаемым результатом. Просто. JUnit - это unit test framework, вы можете использовать это.

Для сложного тестирования модулей базы данных просмотрите DBUnit.

Ответ 2

Я бы использовал инъекцию зависимостей для передачи в соединении с базой данных или что-то подобное, чтобы все это можно было издеваться над тестами. Затем вы можете написать тесты, в которых макет запроса выдает исключения, возвращает различные ошибки или действительные результаты. Затем ваши тесты просто проверяют правильность выполнения DBHandler.

Ответ 3

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

Вам нужно будет беспокоиться о наличии данных.

Если вы используете Spring, они поддерживают транзакционные модульные тесты.

Не понятно, что вы просите. Вы уже знаете об JUnit. Как вы думаете, что вам не хватает?

Ответ 4

Быстрое решение для mock db работает следующим образом:

  • Настройка тестового сервера HSQLDB независимо от вашего приложения.

  • Заполните тестовые данные.

  • Используйте условный код, в котором вы подключитесь к своей реальной базе данных, чтобы подключитесь к тестовому серверу. свойство в вашем приложении может контролируйте это.

  • Проверьте приложение