Инструменты тестирования интеграции на основе данных для Java

StackOverflow https://stackoverflow.com/questions/4864717

Вопрос

Я столкнулся с тем, что, на мой взгляд, является распространенной проблемой, но я не нашел большого количества обсуждений или существующих инструментов для ее решения.Я пытаюсь настроить систему интеграционного тестирования (уже имеющую мощный набор модульных тестов), которая поддерживает QA, отправляющую входные данные и ожидаемые результаты (в идеале в виде плоских файлов), которые могут быть запущены из стандартизированного класса junit.

У меня есть план создать свой собственный здесь, используя junit @Paramaterized аннотация.Я представляю, что каждый набор данных и результатов имеет управляющий файл, и все управляющие файлы помещаются в один каталог.Метод генератора параметров просканирует этот каталог и вернет список этих файлов.Затем конструктор тестирования прочитает этот файл и настроит входные данные и ожидаемые результаты.

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

Само приложение представляет собой чисто серверный инструмент типа ETL, который берет данные из нескольких входных файлов в различных форматах и выдает результаты в базе данных.У меня уже есть несколько статических интеграционных тестов, которые используют базу данных Derby in memory для проверки результатов на наличие тривиальных входных данных, и я планирую использовать аналогичную систему для подтверждения данных здесь.Ожидаемые результаты будут иметь вид (key_value, column, expected value) тройки.Я хочу использовать junit для того, чтобы подключиться к остальной части нашей инфраструктуры тестирования и отчетности о результатах.

Это было полезно?

Решение

Взгляните на Спок, платформа тестирования на основе Groovy с мощной поддержкой тестирования на основе данных.Spock предназначен для тестирования Java (и Groovy) кода и полностью совместим с JUnit (фактически, тесты Spock выполняются с JUnit).Видишь здесь для простого примера приведем тест, который извлекает данные из базы данных.

В целом, ваш план кажется мне разумным, а также может быть реализован с помощью простого JUnit и @Parameterized.Однако Спок и Заводной могут облегчить вам жизнь.Например, работать с текстовыми файлами и базами данных в Groovy намного проще, чем в Java.

Отказ от ответственности:Я создатель Спока.

Другие советы

Я сам предпочитаю Спока.Но я вижу, что существует фреймворк JUnitParams, который гораздо более удобочитаем, чем прямые параметризованные тесты JUnit:

https://github.com/Pragmatists/junitparams

Подробное описание можно найти по адресу:

https://weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java

Для других, задающих этот вопрос....

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top