Почему JUnit запускает тестовые случаи для Теории только до первого сбоя?

Недавно в JUnit (начиная с версии 4.4) была добавлена новая концепция Теории.

В двух словах, вы можете пометить свой тестовый метод аннотацией @Theory (вместо @Test), сделать свой тестовый метод параметризованным и объявить массив параметров, помеченных аннотацией @DataPoints, где-нибудь в том же классе.

JUnit будет последовательно запускать ваш параметризованный тестовый метод, передавая параметры, извлеченные из @DataPoints, один за другим. Но только до тех пор, пока первый такой вызов не завершится неудачей (по любой причине).

Концепция кажется очень похожей на @DataProviders из TestNG, но когда мы используем поставщиков данных, все сценарии выполняются независимо от результатов их выполнения. И это полезно, потому что вы можете видеть, сколько сценариев работает/не работает, и вы можете более эффективно исправить свою программу.

Итак, мне интересно, в чем причина не выполнять @Theory-маркированный метод для каждого @DataPoint? (Оказывается, не так сложно унаследовать от Theories runner и сделать пользовательский runner, который будет игнорировать сбои, но почему мы не имеем такого поведения из коробки?)

UPD: Я создал отказоустойчивую версию Theories runner и выложил ее в открытый доступ: https://github.com/rgorodischer/fault-tolerant-theories

Для сравнения со стандартным Theories runner запустите StandardTheoriesBehaviorDemo, затем FaultTolerantTheoriesBehaviorDemo, которые находятся в папке src/test/.... папке.

9
задан Roman 30 April 2012 в 09:23
поделиться