LINUX.ORG.RU

Как рулить expectedExceptions в TestNG?

 ,


0

1

Допустим, у меня есть дата провайдер с правильными и неправильными параметрами, обработка части параметров которого должна бросить исключение. Я пишу тест, аннотирую его

@Test(dataProvider = "dataProviderName", expectedExceptions = {ExpectedException.class})
и жду, пока тест удачно завершится, получив в ряде случаев ожидаемый эксепшн. Но нет, этого не будет, потому что тест не в каждом случае бросает исключение, а только для неправильных данных. Получается, нужно создавать отдельные тестовые методы для правильных данных и для каждого ожидаемого исключения, сопровождая их отдельными дата провайдерами? Или я все-таки что-то делаю не так?

★★★★★
Ответ на: комментарий от Legioner

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

f1xmAn ★★★★★
() автор топика
Ответ на: комментарий от f1xmAn

Тебе никто не мешает имитировать логику с ручным вылавливанием исключений через try-catch и делать любую логику, какую тебе захочется.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Это же не то же самое, что

@Test(dataProvider = "dp", expectedExceptions{
    @ExpectedException(class = NullPointerException.class, dataProviderValueIndex = 2),
    @ExpectedException(class = IllegalArgumentException.class, dataProviderValueIndex = 3),
    @ExpectedException(class = IllegalStateException.class, dataProviderValueIndex = 18)
})
перед тестовым методом. Мне нравится, что в TestNG можно не писать километры одинакового кода на каждый тестовый случай, как в junit'е, а достаточно лишь перечислить параметры тестового метода в дата провайдере и, кажется, такое расширение аннотации @Test пошло бы фреймворку на пользу.

f1xmAn ★★★★★
() автор топика
Ответ на: комментарий от f1xmAn

Юнит тесты это ещё и самодокументирование кода. По хорошо написаным тестам видны требования к классу. Если всё пихать в кучу, как вы хотите - этого не получится))

ii8_ ★★★★
()
Ответ на: комментарий от ii8_

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

f1xmAn ★★★★★
() автор топика
Ответ на: комментарий от f1xmAn

К тому же, когда все данные перед носом, понять требования к классу несколько проще, чем вертеть портянку текста вверх-вниз.

f1xmAn ★★★★★
() автор топика

О, а у тебя есть какие-то ссылки/статьи/примеры по датапровайдерам? А то чота уже долго пытаюсь вкурить и пока не выходит.

Lordwind ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.