Недавно в JUnit была добавлена новая концепция Теории (начиная с версии 4.4).
В двух словах, вы можете пометить свой метод тестирования аннотацией @Theory
(вместо@Test
), задайте параметризацию вашего тестового метода и объявите массив параметров, помеченных @DataPoints
аннотацией где-то в том же классе.
JUnit будет последовательно запускать ваш параметризованный метод тестирования, передавая параметры, полученные из @DataPoints
один за другим.Но только до тех пор, пока первый такой вызов не завершится неудачей (по любой причине).
Эта концепция очень похожа на @DataProviders
от TestNG, но когда мы используем поставщиков данных, все сценарии запускаются, несмотря на ихрезультаты исполнения.И это полезно, потому что вы можете видеть, сколько сценарной работы / не работают, и вы можете исправить свою программу более эффективно.
Итак, мне интересно, в чем причина не выполнять @Theory
помеченный метод для каждого @DataPoint
?(Кажется, что не так сложно унаследовать от Theories runner и создать собственный runner, который будет игнорировать сбои, но почему у нас нет такого поведения из коробки?)
UPD : Iсоздали отказоустойчивую версию бегуна Теорий и сделали ее доступной для общего доступа: https://github.com/rgorodischer/fault-tolerant-theories
Чтобы сравнить ее со стандартным бегуном Теорий, запустите StandardTheoriesBehaviorDemo, а затем FaultTolerantTheoriesBehaviorDemo, которые находятся в папке src/test/...
,