Матрица тестов (выполнение метода со всеми возможными вариациями параметров)

Использую java, Selenium Web driver, jUnit4, Allure
Мне тестами необходимо вызывать один и тот же метод. У метода есть к примеру 4 параметра.
Для простоты понимая будем считать что типы параметров булево.

Мне необходимо выполнить тесты в разрезе всех возможных комбинаций этих параметров.
На данный момент на фирме где я работаю создаются на каждую комбинацию отдельный тест.

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

Есть задумка немного прикрутить jUnit тесты: создать List, и выполнять тесты в цикле. При этом каждый тест должен выглядеть по всем отчетам как отдельный. Из минусов такого подхода вижу сложность, что невозможно будет вручную тестировать тест по определенной комбинации параметров.

Возможно кто-то сталкивался с подобной задачей, и посоветует, как лучше её решить?
p.s. Простите, если неточно описал проблему(я новичёк в java)

Параметризированные тесты

Артур, большое спасибо Вам за помощь! Попробую, потом напишу своё мнение по поводу удобства.

Dataprovider testNg
пока лучшее решение

1 лайк

Добрый вечер! Попробовал понять что умеют параметризированные тесты. В целом все проблемы вроде бы решаемые, кроме одной: запуск одного теста в IDEA

  1. Сначала попробовал использовать вариант который посоветовал arturk. Результат неплохой, единственное что – не понравилось 3-хуровневое дерево тестов. На первом уровне runner с названием класса, на втором уровне runners с названием теста и вариации теста, и на третьем уровне тест. Т.е. грубо говоря 2-й и 3-й уровень повторяются
  2. Начал смотреть на другие варианты. Нашёл вариант GitHub - Pragmatists/JUnitParams: Parameterised tests that don't suck
    Функционал чуть побольше будет, внешний вид именно такой как нужно, но при этом невозможно запустить вручную один тест, что можно было сделать в варианте1
  3. Потом нашёл такую ссылку, и думал что тут решили проблему Can't run individual test methods from IntelliJ · Issue #31 · square/burst · GitHub
    но оказалось что там та же беда
  4. Итого вывод к которому я пришёл(если он ошибочный, с радостью выслушаю критику): неважно, testNG или jUnit. Из IDEA при нажатии на тест вызываются классы jUnit из чёрного ящика, и отладить или переделать их логику невозможно. Для того чтобы при нажатии правой кнопкой мыши на тест была кнопочка с запуском теста, необходимо чтобы представление этого теста было по шаблону: testName и дальше можно в квадратных скобках писать любые вещи. К примеру: myTest[А парам1=10, парам2=20]. Дальше, IDEA пытается отфильтровать тест по description. Для этого она берет название текущего runner и сопоставляет со всеми возможными runner.
  5. Итого, для того чтобы запустить одиночный тест, необходимо для каждого теста заводить свой runner (что выглядит не так красиво, как если создавать тесты отдельно)

неправильно
тест НГ нужно ранать хмл
там можно закомментить недужные тесты или ехплицитно прописать 1 тест для дебага