Модульное тестирование упорядоченных SQL-запросов - PullRequest
0 голосов
/ 19 октября 2019

Я пишу модульные тесты для запросов, где результаты должны быть возвращены в определенном отсортированном порядке. Мы используем Java H2 в базе данных памяти.

Я хочу убедиться, что операторы order by выполняются правильно. Я не пытаюсь проверить H2, я принимаю, что это правильно, я пытаюсь проверить, что я выдал правильный оператор SQL для возврата правильно отсортированных результатов.

Я думаю, что-то вроде способа сказатьH2, чтобы рандомизировать результаты каждый раз перед сортировкой или, возможно, какой-то вставкой SQL, которая вставляет строки в случайном порядке в таблицы каждый раз. Надеюсь, это проверяет правильность заказа. Я знаю, что это не гарантия, потому что база данных определяет свой внутренний порядок, но подумал, что я добавлю это как идею, о которой я думал.

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

вам нужно вставить только две строки, которые не должны изменяться (не вставляйте случайные данные). Например, если у вас есть объект User со следующими столбцами: id, name, фамилия.

Вы вставляете 2 строки:


#id# name # surname #
#####################
#1# john  # doe     #
#2# eva   # nondoe  #

И, например, если вас интересуетимя столбца, то вы пишете такой тест.

//BUILD
insertData();

//OPERATE
List<User> result = selectAllDataByNameAsc();

//CHECK
assertThat(result.get(0).getName()).isEqualTo("eva");

Этого достаточно. Для проверки вашего запроса сортировки достаточно двух строк.

0 голосов
/ 19 октября 2019

Я думаю, вы не должны рандомизировать результаты H2. Я бы посоветовал вам написать два или три теста с одинаковыми запросами и разными order by. В этом случае вы гарантируете, что различные параметры заказа приведут к результатам в правильном отсортированном порядке.

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