Как делают меня, модульный тест jdbc кодирует в Java?

Хотя это работает только для скалярных массивов (см. примечание ниже), оно короткое:

array1.length === array2.length && array1.every(function(value, index) { return value === array2[index]})

Rr, в ECMAScript 6 / CoffeeScript / TypeScript со стрелочными функциями:

array1.length === array2.length && array1.every((value, index) => value === array2[index])

(Примечание: здесь «скаляр» означает значения, которые можно напрямую сравнивать с помощью ===. Итак: числа, строки, объекты по ссылке, функции по ссылке. Подробнее см. в ссылке MDN для получения дополнительной информации о операторах сравнения).

UPDATE

Из того, что я прочитал из комментариев, сортировка массива и сравнение могут дать точный результат:

array1.length === array2.length && array1.sort().every(function(value, index) { return value === array2.sort()[index]});

Например :

array1 = [2,3,1,4];
array2 = [1,2,3,4];

Тогда приведенный выше код даст true

44
задан ScArcher2 6 November 2008 в 05:48
поделиться

8 ответов

Вы могли использовать DBUnit вместе с HSQLDB, который может считать его исходные данные с файлов CSV, например.

24
ответ дан Christophe Mohimont 23 September 2019 в 11:37
поделиться

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

1
ответ дан Steve K 23 September 2019 в 11:37
поделиться

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

4
ответ дан Cheekysoft 23 September 2019 в 11:37
поделиться

Я сказал бы, что HSQL является способом пойти во время Ваших модульных тестов. Точка Вашего теста должна протестировать Ваш код jdbc и удостовериться, что это работает. Добавление пользовательских классов или насмешка вызовов jdbc могут легко скрыть ошибки.

я главным образом использую mysql и когда тестовый прогон класс драйвера и URL изменяется на org.hsqldb.jdbcDriver и jdbc:hsqldb:mem:test.

2
ответ дан user30684 23 September 2019 в 11:37
поделиться

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

, Если бы Вы используете jdbc как есть, я предположил бы, что Вы записали себе служебный своего рода класс, чтобы сделать некоторые задачи в строке DBUtils.getMetadataFor(String tablename). То, что это означало бы, - то, что необходимо было бы создать насмешку для того класса, и это могло быть всем, в чем Вы нуждаетесь. Это было бы довольно легким решением для Вас, так как у Вас, по-видимому, уже есть серия связанных доступных фиктивных объектов jdbc. Обратите внимание, что я предполагаю, что Ваш код jdbc не взорван все вокруг приложения - если это, осуществите рефакторинг!!!

, Если Вы однако используете какую-либо платформу для обработки базы данных (как Шаблонные классы Платформы Spring JDBC) Вы можете и должны дразнить интерфейсное использование класса EasyMock или некоторый другой эквивалент. Тем путем можно иметь всю власть в мире, требуемом для легкой насмешки соединения.

И в последний раз если ничто иное не работает, можно сделать то, что другие уже сказали и используют DBUnit и/или дерби.

1
ответ дан P Arrayah 23 September 2019 в 11:37
поделиться

Используйте любую из Ложных платформ для такой задачи. ( jMock, и т.д. .)

[приблизительно 112] примеры

6
ответ дан Sunny Milenov 23 September 2019 в 11:37
поделиться

У вас есть несколько вариантов:

  • Копировать базу данных с помощью библиотеки Mock, например, JMock . Огромный недостаток в том, что ваши запросы и данные, скорее всего, вообще не будут тестироваться.
  • Используйте легкую базу данных для тестов, такую ​​как HSQLDB . Если ваши запросы просты, это, вероятно, самый простой способ.
  • Выделите базу данных для тестов. DBUnit - хороший вариант, или, если вы используете Maven, вы также можете использовать sql-maven-plugin для правильной настройки и разрушения базы данных (будьте осторожны с зависимостями между тесты). Я рекомендую этот вариант, поскольку он даст вам наибольшую уверенность в том, что запросы правильно работают с вашим поставщиком БД.

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

30
ответ дан 26 November 2019 в 22:06
поделиться

Я предпочитаю использовать EasyMock для тестирование непростого для проверки кода .

2
ответ дан 26 November 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: